Воспроизведение видео на Java (JMF, Fobs4JMF, Xuggler, FMJ) - PullRequest
24 голосов
/ 11 января 2010

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

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

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

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

  • Возможность воспроизведения , паузы , seekToFrame ИЛИ seekToTime и остановки воспроизведения. По сути, я хочу иметь возможность воспроизводить сегменты одного видеофайла нелинейным способом. Например, я могу захотеть воспроизвести отрезок от 20,3 с до 25,6 с, сделать паузу на 10 секунд, а затем воспроизвести отрезок с 340,3 до 350,5 с и т. Д.

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

  • Видео должно отображаться в компоненте Swing J.

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


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

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

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 работать, но пока не добился успеха.


Буду признателен за ваше мнение по моей проблеме.

Ответы [ 5 ]

11 голосов
/ 26 января 2010

Может ли брат выкрикнуть Ксугглер ?

4 голосов
/ 02 августа 2011

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

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

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

2 голосов
/ 03 июля 2010

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

2 голосов
/ 21 февраля 2010

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

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

Была также предпринята некоторая работа, пытаясь перевести библиотеку VLC libvlc в java. Я еще не пробовал, и было бы интересно услышать от кого-то, кто имеет.

2 голосов
/ 11 января 2010

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

...