2014-12-08 7 views
1

Я разрабатываю интерактивный видеоплеер и хотел бы динамически установить размытие движения, используя VLCj 3.0.1. Поскольку EmbeddedMediaPlayer не предоставляет какой-либо метод setBlur, я предполагаю, что я должен использовать addMediaOptions(String... options).VLCj: Как установить размытие изображения?

Однако я не смог выяснить, как его использовать. Запустив VLC из командной строки, мне пришлось бы добавить следующие параметры: --video-filter=motionblur blur-factor=44. Предоставление того же параметра в массиве, однако, не показывает никакого эффекта. Я был бы рад, если бы кто-то мог показать мне правильный синтаксис. Это, по существу мой код:

EmbeddedMediaPlayerComponent vlc = new EmbeddedMediaPlayerComponent(); 
EmbeddedMediaPlayer player = vlc.getMediaPlayer(); 
player.playMedia(path); 

String[] options = { "video-filter=motionblur", "blur-factor=" + blur }; 
player.addMediaOptions(options);  

ответ

1

В вашем примере код, который вы добавляете варианты после вы играете СМИ, которые могли бы работать в некоторых случаях, но вы действительно должны (в общем случае) просто передать их в качестве дополнительных параметров на ваш звонок playMedia.

Однако ...

Некоторые из этих вариантов, которые непосредственно не поддерживаются функции API LibVLC должны быть переданы при создании экземпляра LibVLC (т.е. vlcj MediaPlayerFactory), а не при воспроизведении медиа.

Поскольку вы используете EmeddedMediaPlayerComponent, тогда вы должны подклассифицировать EmbeddedMediaPlayerComponent и переопределить onGetMediaPlayerFactoryArgs() и передать свои варианты размытия движения вместе с тем, что вам нужно.

Обратите внимание, что вам необходимо отправить точные ключи командной строки, поэтому вы должны префикс своих опций «-».

Существует пример того, как это делается в vlcj Javadoc для EmbeddedMediaPlayerComponent.

Люди часто спрашивают, есть ли какая-либо документация, описывающая, как можно установить каждый из доступных параметров VLC - короткий ответ - нет, и что любое использование таких параметров полностью не поддерживается и может не работать с будущим версии VLC/LibVLC.

В идеале, разрешение движения может быть достигнуто с помощью новой функции API LibVLC, но кому-то придется написать патч для VLC, чтобы это произошло.

+0

Переопределяя 'onGetMediaPlayerFactoryArgs' Теперь я могу изначально установить коэффициент размытия. Однако, в зависимости от ввода пользователем, я хотел бы динамически изменять коэффициент размытия после запуска видео. Правильно ли я понимаю вас, что мне нужно будет создать новый «EmbeddedMediaPlayerComponent»? – Pedro

+0

Скорее всего, да, вам придется каждый раз создавать новый компонент с разными аргументами. Это может быть так, что вы можете включить фильтр через фабричные аргументы, а затем передать параметры через playMedia (mrl, options) для фактического коэффициента размытия - я точно не знаю, вам придется попробовать он - если это работает, то вы можете просто использовать тот же EmbeddedMediaPlayerComponent – caprica

+0

Лучшим решением является исправление VLC/LibVLC, чтобы, конечно, выставить фильтр через API, но это еще одна проблема. – caprica