Воспроизведение видео в Java (JMF, Fobs4JMF, Xuggler, FMJ)
мне нужно простое воспроизведение видео на Java.
вот мои требования:
КАЧЕСТВО ПРОДУКЦИИ
открыть и декодировать видео файлы, видео и аудио кодеки могут быть выбраны МНОЮ. То есть я могу выбрать хорошо себя ведущие кодеки.
уметь играть, пауза, seekToFrame или seekToTime и остановка воспроизведение. По существу Я хочу иметь возможность воспроизводить сегменты одного видеофайла нелинейным образом. Например я хочу играть в сегменте 20.3 сек до 25,6 сек, пауза на 10 секунд, а затем воспроизвести сегмент 340.3 сек до 350.5 сек и т. д.
во время воспроизведения, видео и аудио должны быть синхронизированы.
видео должно отображаться в Swing JComponent.
должен быть в состоянии использовать в коммерческом продукте без необходимости быть открытым исходным кодом (Т. е. LGPL или Comercial хорошо)
мои исследования привели меня к следующим решениям:
- Используйте Java Media Framework + Fobs4JMF http://fobs.sourceforge.net/f4jmf_first.html
я реализовал быстрый прототип, и это, кажется, делать то, что мне нужно. Я могу воспроизвести сегмент видео, используя:
player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();
в то время как Fobs4JMF, похоже, работает, я чувствую, что качество кода плохое и проект больше не активен. Кто-нибудь знает о каких-либо продуктах, которые используют Fobs4JMF?
- написать Флэш-приложение, которое играет видео и использовать JFlashPlayer, чтобы принести его в мое приложение Java Swing
В отличие от Java, 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 работать, но до сих пор не имел успеха.
буду признателен за Ваше мнение по моей проблеме.
5 ответов
на мой взгляд, VLCJ - это путь вперед для такого рода вещи. Я люблю Xuggler для кодирования / перекодирования работы, но, к сожалению, это просто так сложно сделать простое воспроизведение и решить все проблемы синхронизации и тому подобное - и это очень похоже на изобретение колеса, делая это.
единственное, что с VLCJ - это то, что для надежной работы с несколькими игроками мне пришлось прибегнуть к игрокам вне процесса. Структура не была самой простой вещью в мир должен быть на месте, но когда он там, он прекрасно работает. В настоящее время я запускаю 3 из игроков процесса в моем приложении бок о бок без каких-либо проблем.
другое предостережение заключается в том, что встроенный медиаплеер не будет работать с компонентом swing, просто тяжеловесным холстом, но это не оказалось проблемой для меня вообще. Если это так, то вы можете использовать прямой медиаплеер, чтобы получить bufferedimage и отобразить его на любом выбранном вами, но он будет есть в вашем CPU a чуть больше (но не больше, чем другие игроки, которые принимают этот подход.)
JavaFX имеет ряд рабочих видео и аудио кодеков, встроенных. Вероятно, это будет решение с самой широкой поддержкой на данный момент.
Я использую jffmpeg так же, как вы используете FOBS, он работает довольно хорошо, хотя я их не сравнивал.
Я также хотел бы увидеть простой способ взаимодействия с собственными кодеками так, как это делает JavaFX, но, похоже, нет реальной интеграции между JavaFX и Java.
также была некоторая работа, пытающаяся получить библиотеку VLC libvlc в java. Я еще не пробовал и был бы заинтересован услышать ответ от любого, кто это сделал.
не пробовал Xuggler (который меня интересует), но я хорошо провожу время с VLCJ. Недостаток, который я нахожу в этом, заключается только в том, что вам нужно установить VLC до вашего приложения.