Я разрабатываю интерактивный видеоплеер и хотел бы динамически установить размытие движения, используя 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);
Переопределяя 'onGetMediaPlayerFactoryArgs' Теперь я могу изначально установить коэффициент размытия. Однако, в зависимости от ввода пользователем, я хотел бы динамически изменять коэффициент размытия после запуска видео. Правильно ли я понимаю вас, что мне нужно будет создать новый «EmbeddedMediaPlayerComponent»? – Pedro
Скорее всего, да, вам придется каждый раз создавать новый компонент с разными аргументами. Это может быть так, что вы можете включить фильтр через фабричные аргументы, а затем передать параметры через playMedia (mrl, options) для фактического коэффициента размытия - я точно не знаю, вам придется попробовать он - если это работает, то вы можете просто использовать тот же EmbeddedMediaPlayerComponent – caprica
Лучшим решением является исправление VLC/LibVLC, чтобы, конечно, выставить фильтр через API, но это еще одна проблема. – caprica