Подтвердить что ты не робот

Воспроизведение видео в Java (JMF, Fobs4JMF, Xuggler, FMJ)

Мне нужно простое воспроизведение видео в Java.

Вот мои требования:

  • КАЧЕСТВО ПРОИЗВОДСТВА

  • Откройте и декодируйте видеофайлы, видео и аудио кодеки которых могут быть выбраны мной. I.E Я могу выбрать хорошо управляемые кодеки.

  • Уметь проигрывать, пауза, seekToFrame ИЛИ seekToTime и остановить. По сути, я хочу иметь возможность воспроизводить сегменты одного видеофайла нелинейным способом. Например, я могу играть в сегменте 20.3 сек до 25.6 сек, пауза в течение 10 секунд, а затем воспроизведение сегмента 340.3 сек до 350.5 сек и т.д.

  • Во время воспроизведения видео и аудио должны быть синхронизированы.

  • Видео должно отображаться в Swing JComponent.

  • Должен иметь возможность использовать в коммерческом продукте без необходимости использования открытого кода (например, LGE или LG)


Мои исследования привели меня к следующим решениям:

Я реализовал быстрый прототип, и это, похоже, делает то, что мне нужно. Я могу воспроизвести сегмент видео, используя:

player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();

Пока работает Fobs4JMF, я чувствую, что качество кода плохое, а проект больше не активен. Кто-нибудь знает какие-либо продукты, которые используют Fobs4JMF?


  • Напишите приложение Flash, которое воспроизводит видео и использует JFlashPlayer, чтобы привести его в мое приложение Java Swing.

В отличие от Java, Flash играет блестящую роль при воспроизведении видео. Я мог бы написать небольшое приложение Flash с помощью методов:

open(String videoFile),
play(),
pause(),
seek(int duration),
stop()

Затем переведите его в Java с помощью JFlashPlayer, который может вызывать функции Flash из Java.

Что мне нравится в этом решении, так это то, что воспроизведение видео во Flash должно быть прочным. Кто-нибудь использовал JFlashPlayer для воспроизведения видео на Java?


  • Напишите простой медиаплеер поверх Xuggler

Xuggler - это обертка FFMpeg для Java, которая кажется довольно активным и высококачественным проектом. Однако реализация простого воспроизведения видео, описанного в требованиях, не является тривиальной (в частности, поиск), но некоторые из работ были выполнены в MediaTools MediaViewer, который будет базой для построения.


  • Использовать FMJ

Я попытался заставить FMJ работать, но до сих пор не удалось добиться успеха.


Я был бы признателен за ваши мнения по моей проблеме.

4b9b3361

Ответ 1

Может ли брат получить крик для Xuggler?

Ответ 2

На мой взгляд, VLCJ - это путь вперед для этого типа вещей. Мне нравится Xuggler для работы с кодировкой/транскодированием, но, к сожалению, это просто сложно сделать простое воспроизведение и решить все проблемы с синхронизацией и т.п., И это очень похоже на повторное использование колеса.

Единственное, что с VLCJ заключается в том, чтобы заставить его работать надежно с несколькими игроками, мне приходилось прибегать к процессам игроков. Рамка была не самой простой вещью в мире, чтобы встать на свои места, но когда она там работает красиво. В настоящее время я запускаю 3 из игроков процесса в своем приложении бок о бок, без каких-либо проблем.

Другое предостережение заключается в том, что встроенный медиаплеер не будет работать с компонентом swing, просто с тяжелым холстом, но для меня это вообще не было проблемой. Если это так, то вы можете использовать прямой медиаплеер, чтобы получить bufferedimage и отобразить, что на все, что вы выберете, но он будет потреблять в ваш процессор немного больше (хотя и не больше, чем другие игроки, которые используют этот подход.)

Ответ 3

JavaFX имеет встроенный набор видео и аудио кодеков. Вероятно, это решение с самой широкой поддержкой на данный момент.

Ответ 4

Я использую jffmpeg так же, как вы используете FOBS, он работает очень хорошо, хотя я их не сравнивал.

Мне также хотелось бы видеть простой способ взаимодействия с родными кодеками так, как это делает JavaFX, но, похоже, не существует реальной интеграции между JavaFX и Java.

Там также была некоторая работа, пытающаяся получить библиотеку libllc VLC в java. Я еще не пробовал, и мне было бы интересно услышать от всех, кто имеет.

Ответ 5

не пробовал Xuggler (который меня интересует), но я хорошо провожу время VLCJ. Недостатком, который я нахожу в нем, является то, что вы должны иметь VLC, установленный до вашего приложения.