2010-01-11 5 views
24

Мне нужно простое воспроизведение видео на Java.Воспроизведение видео в Java (JMF, Fobs4JMF, Xuggler, FMJ)

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

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

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

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

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

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

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


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

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

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

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


  • Написать приложение Flash-играющее видео и использовать JFlashPlayer, чтобы привести его в моем свинг приложения Java

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


Буду признателен за мою мысль.

ответ

11

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

+0

Мне нужна помощь по xuggle, как я могу добавить два видео для создания одного видео в xuggle? Я пытаюсь Google, но это не помогает ... –

+2

Где на самом деле есть ссылка для скачивания для Xuggler ?! – aaronsnoswell

+0

Xuggler не может искать ключевое слово для mp3 или m4a. Это недостающая проблема ffmpeg. – taymedee

2

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

+0

Привет jsight и спасибо за ваш ответ. Я знаю, что JavaFX поддерживает видео, но, к сожалению, мне пришлось его отклонить, так как трудно импортировать компоненты JavaFX в приложение Java Swing. Есть способы, но это неподдерживаемые хаки. – ksullivan

+0

См. Также: http: //dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf и http://www.google.com/url?sa=t&source=web&ct=res&cd=3&ved=0CBEQFjAC&url=http%3A%2F%2Flobobrowser.wordpress. com% 2F2008% 2F12% 2F29% 2Fjavafx-video-in-a-swing-application-technically-doable% 2F & ei = -DhLS97jCsKztgf87cDkDQ & usg = AFQjCNHU942l5cD-Wwe-fn7gSiW8BwFP7Q & sig2 = 0RkjWw98VIKfs1egM4gN7g – jsight

+0

Спасибо за эти ссылки. По-видимому, в дополнение к официальной поддержке JavaFX на Java не возникнет проблем с распространением (особенно в отношении видеокодеков). – ksullivan

2

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

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

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

+0

ценят, что это уже больше года, но если вы все еще заинтересованы в моем ответе! – berry120

+0

спасибо, да, это все еще открытая проблема для меня, и я займусь этим. – paul

2

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

+2

У вас нет - вы можете распространять libvlc с вашим приложением, что я и делаю. – berry120

+0

Не пытайтесь получить поддержку для vlcj, хотя парень - это колокольчик. –

4

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

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

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