VLCj: Как установить размытие в движении?

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

Тем не менее, я не смог понять, как его использовать. Запуская 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() и передайте свои параметры размытия в движении вместе с тем, что вам нужно.

Обратите внимание, что вам нужно отправлять точные параметры командной строки, поэтому вы должны поставить перед вашими опциями "-".

Вот пример того, как сделать это в Javadoc vlcj для EmbeddedMediaPlayerComponent,

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

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

Другие вопросы по тегам