2015-03-06 4 views
0

Используя EmbeddedMediaPlayerComponent vlcj 3.2.0, курсор можно отключить с помощью this.setCursorEnabled(false);, но это работает только на холсте.Использование пустого курсора в vlcj при воспроизведении vlc

Если VLC воспроизводит через vlcj, курсор становится курсором по умолчанию и остается для времени VLC по умолчанию (1000 мс), пока курсор не исчезнет. Использование VLC напрямую, время курсора может быть установлено на 0 мс.

Как я могу заставить курсор исчезнуть с помощью vlcj. Либо установите время на 0 мс, либо используя blankCursor?

ответ

1

Если вы хотите использовать переключатель VLC «--mouse-hide-timeout = 0» с помощью vlcj, вы можете сделать это, переопределив аргументы фабрики медиаплеера.

По умолчанию EmbeddedMediaPlayerComponent имеет следующие заводские аргументы:

protected static final String[] DEFAULT_FACTORY_ARGUMENTS = { 
    "--video-title=vlcj video output", 
    "--no-snapshot-preview", 
    "--quiet-synchro", 
    "--sub-filter=logo:marq", 
    "--intf=dummy" 
}; 

Компонент класс разработан как суб-классифицировано, один из методов, которые вы можете переопределить позволяет установить собственные заводские аргументы:

mp = new EmbeddedMediaPlayerComponent() { 

    @Override 
    protected String[] onGetMediaPlayerFactoryArgs() { 
     return new String[] { 
      "--video-title=vlcj video output", 
      "--no-snapshot-preview", 
      "--quiet-synchro", 
      "--sub-filter=logo:marq", 
      "--intf=dummy", 
      "--mouse-hide-timeout=0" 
     }; 
    } 
}; 

Здесь мы добавили --mouse-hide-timeout=0.

Это немного уродливо, потому что мы также должны предоставить аргументы по умолчанию. С vlcj 3.5.0 это немного легче, если вы хотите сохранить аргументы те по умолчанию:

mp = new EmbeddedMediaPlayerComponent() { 

    @Override 
    protected String[] onGetMediaPlayerFactoryExtraArgs() { 
     return new String[] { 
      "--mouse-hide-timeout=0" 
     }; 
    } 
}; 

Там также может быть гораздо более простой способ ...

Убедитесь, что вы звоните mediaPlayer.setCursorEnabled(false), прежде чем вы показываете которое содержит медиаплеер.

+0

'--mouse-hide-timeout = 0' работает хорошо. 'MediaPlayer.setCursorEnabled (false)' как-то работает только с фреймом, но не на холсте. (Я поставил это неправильно в моем стартовом вопросе) Я сменил курсор на 'blankCursor = Toolkit.getDefaultToolkit(). CreateCustomCursor (blankImage, new Point (0, 0)," blank ");' и на конструкторе 'canvas.getCursor () .getName() 'возвращает" blank ". Поэтому я думаю, что это не проблема vlcj. – schasoli

+0

Вы видели последний комментарий о скрытии курсора, прежде чем показывать свое окно? Если я сделаю это после того, как я покажу свое окно, я увижу глючный указатель, иначе он будет работать так, как ожидалось. – caprica