HTTP Live Streaming (HLS) не работает Java FX 2.2.21

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

Краткая история. Я написал медиаплеер на основе JavaFX 2.2.7, который, как было доказано, воспроизводит поддерживаемые локальные и удаленные видеофайлы, но не воспроизводит прямые потоки HTTP. Пробовал SSCCE непосредственно из Oracle, обновился до JavaFX2.2.21, а также попытался запустить Java 7 JRE. Прямая трансляция HTTP не работает.

Предыстория:
Я написал медиаплеер на основе JavaFX 2.2.7, встроенный в приложение Java 6 Swing (используя JPanels и т. д.). Я могу воспроизводить локальный файл поддерживаемого формата (например, Sintel trailor mp4 h264), а также могу воспроизводить удаленные файлы поддерживаемого формата (например, файл FLV, расположенный непосредственно с oracle.com).

Проблема: когда я пытаюсь использовать "HTTP Live Stream" (HLS), ничего не воспроизводится. Назначение URL-адреса HTTP Live Streaming объекту javafx.scene.media.Media, похоже, не работает. В итоге у меня пустой плеер, но исключений и ошибок нет.

Очевидно, я могу успешно создать экземпляр объекта Media из URL-адреса HLS без ошибок:

private static final String MEDIA_URL = "http://download.oracle.com/otndocs/products/javafx/JavaRap/prog_index.m3u8";

Media media = new Media(MEDIA_URL);
MediaException ex = media.getError();

if( ex != null ) {
  System.out.println("Media Error" + ex.getMessage());
} else {
  System.out.println("No Media Error");
}

Вывод консоли программы: "Нет ошибки носителя"

Шаги по устранению неполадок, которые я пробовал:

Я подумал, что что-то не так с кодом моего плеера, поэтому я перешел на страницу http://download.oracle.com/otndocs/products/javafx/2/samples/Ensemble/index.html#SAMPLES/Media/Streaming.%20Media%20Player и скопировал источник напрямую и запустил его... К сожалению, тот же результат. «Ensemble Streaming Media Player» запускается, но просто показывает пустое видеоокно. Элементы управления мультимедиа и ползунки доступны, но видео не воспроизводится. (Важно отметить, что плеер работает в моем веб-браузере, а рэп-видео ужасное.)

Основываясь на примечаниях к выпуску для Java 2.2.7, у меня сложилось впечатление, что HLS поддерживается. Опасаясь ошибиться в своих предположениях, я попытался перейти на автономную версию JavaFX 2.2.21, но это не решило проблему. Результат точно такой же. Без исключений, без ошибок и без видео.

Я не могу перейти на Java 7 (я твердо придерживаюсь Java 1.6.0.32 из-за ограничений проекта), но ради аргумента я попытался запустить код медиаплеера Ensemble на Java 7, и результат тот же.

Любая помощь, которую кто-то может предоставить, будет принята с благодарностью.

(Для SSCCE вы можете просмотреть код, который я пытался использовать дословно, по ссылке Oracle Streaming Media Player выше.)

Заранее спасибо всем, кто может помочь!


person NotJo    schedule 15.07.2014    source источник


Ответы (1)


Мой вывод: прямая трансляция Http не работает с JavaFX 2.2.7 или 2.2.21 и Java 1.6.0_32.

Я считаю, что доказал, что проблема связана с JavaFX 2.2.7 и JavaFX 2.2.21, и что использование нового JavaFX в комплекте с Jre7 решает проблему.

Я создал совершенно новый проект и добавил JAR-файлы JavaFX, связанные с JRE 7, в свой путь сборки. Я скопировал код из http://download.oracle.com/otndocs/products/javafx/2/samples/Ensemble/index.html#SAMPLES/Media/Streaming%20Media%20Player, и это работает.

Поэтому я внес некоторые изменения в свой исходный проект Java Eclipse.

Удален путь из сборки:

  • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar
  • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\javaws.jar
  • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\plugin.jar
  • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\deploy.jar

Добавлено в путь сборки:

  • C:\Program Files (x86)\Java\jre7\lib\jfxrt.jar
  • C:\Program Files (x86)\Java\jre7\lib\javaws.jar
  • C:\Program Files (x86)\Java\jre7\lib\plugin.jar
  • C:\Program Files (x86)\Java\jre7\lib\deploy.jar

Все еще используя среду выполнения Java 1.6.0_32, я запустил свое приложение, и все заработало.

Конечно, это похоже на гигантский взлом. Я разочарован примечаниями к выпуску JavaFX 2.2.7.

ПРИМЕЧАНИЕ. Чтобы экспортировать мое приложение в виде исполняемого файла Jar, мне также пришлось извлечь связанные с JavaFX библиотеки ".dll" из JRE 7 и добавить их в java.library. path (используя пакетный скрипт) перед запуском jar.

person NotJo    schedule 16.07.2014