Вопрос

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

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

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

  • Открывать и декодировать видеофайлы, видео- и аудиокодеки которых я могу выбрать.Т. е. я могу подобрать хорошо ведущие себя кодеки.

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

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

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

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


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

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

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, которая выглядит довольно активным и высококачественным проектом.Однако реализация простого воспроизведения видео, описанного в требованиях, не является тривиальной (в частности, Seeking), но некоторая работа была проделана в MediaTools MediaViewer, который станет основой для дальнейшего развития.


  • Используйте FMJ

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


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

Это было полезно?

Решение

Может ли брат похвалить Ксагглер?

Другие советы

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top