Java Media Framework - Java Media Framework

Java Media Framework
Приложение JMStudio
JMF просто JMStudio приложение играет QuickTime фильм
Разработчики)Sun Microsystems
Стабильный выпуск
2.1.1e / 23 мая 2003 г. (2003-05-23)
Написано вЯва
Операционная системаКроссплатформенность
ТипБиблиотека для мультимедиа
Интернет сайтJava Media Framework API (JMF), на Oracle.com

В Java Media Framework (JMF) является Java библиотека который позволяет добавлять аудио, видео и другие временные медиафайлы в Ява приложения и апплеты. Этот дополнительный пакет, который может захватывать, воспроизводить, транслировать и перекодировать несколько медиа-форматы, расширяет Платформа Java, стандартная версия (Java SE) и позволяет разрабатывать кроссплатформенные мультимедийные приложения.

Версии и лицензирование

Первоначальная версия JMF только для воспроизведения была разработана Sun Microsystems, Силиконовая Графика, и Intel, и выпущен как JMF 1.0 в 1997 году. JMF 2.0, разработанный Sun и IBM, вышел в 1999 году и добавил: захват, потоковую передачу, подключаемый кодеки, и транскодирование. JMF позиционируется как часть настольной технологии J2SE от Sun, в отличие от серверных и клиентских структур приложений Java. Заметными исключениями являются Java-апплеты и Запуск Java Web, которые имеют доступ к полной JMF в базовой JRE веб-браузера или программы просмотра апплетов.[1][2]

JMF 2.0 изначально поставлялся с декодером и кодировщиком MP3. Это было удалено в 2002 году, а новый плагин только для воспроизведения MP3 был опубликован в 2004 году.

Бинарные файлы JMF доступны по специальной лицензии, а исходный код доступен по лицензии SCSL.

Текущая версия поставляется с четырьмя БАНКА файлы и сценарии оболочки для запуска четырех приложений на основе JMF:

  • JMStudio - Простой графический интерфейс игрока
  • JMFRegistry - Графический интерфейс для управления «реестром» JMF, который управляет настройками, надстройками и т. Д.
  • JMFCustomizer - Используется для создания файла JAR, который содержит только классы, необходимые для конкретного приложения JMF, что позволяет разработчикам поставлять приложение меньшего размера.
  • JMFInit

JMF доступен в версии, полностью основанной на Java, и в виде «пакетов производительности» для конкретной платформы, которые могут содержать проигрыватели с собственным кодом для платформы и / или подключаться к мультимедийному движку, специфичному для этой платформы. JMF 2.0 предлагает пакеты производительности для Linux, Solaris (на SPARC) и Windows.[1]

В январе 2011 года Тюдор Холтон из Bentokit Project выпустил Пакет Debian для JMF, чтобы облегчить трудности, которые возникли со временем при установке JMF на Debian и Ubuntu GNU / Linux. Этот пакет не содержит JMF, но предоставляет пользователю лицензию JMF, загружает ее с веб-сайта Oracle, а затем устанавливает.[3] Похожий Пакет Debian Установщик для подключаемого модуля JMF MP3 также был создан в феврале 2011 года.[4]

Концепции дизайна

JMF абстрагирует медиа, с которыми работает, в Источник данныхs (для носителей, считываемых в JMF) и DataSinks (для экспортируемых данных). Это не дает разработчику значительного доступа к деталям любого заданного формата; скорее, мультимедийные данные представлены как источники (сами получаемые из URL-адресов), которые можно считывать и воспроизводить, обрабатывать и экспортировать (хотя не все кодеки поддерживают обработку и перекодирование).

А Управляющий делами class предлагает статические методы, которые являются основной точкой контакта с JMF для приложений.

Критика и альтернативы

Многие разработчики JMF жаловались на то, что реализация JMF, поставляемая в современных JRE, поддерживает относительно небольшое количество современных кодеков и форматов. Например, его полностью Java-версия не может воспроизводить MPEG-2, MPEG-4, Windows Media, RealMedia, наиболее QuickTime фильмы, Вспышка контент новее, чем Flash 2, и требуется плагин для воспроизведения повсеместных MP3 формат.[5] Хотя пакеты производительности предлагают возможность использовать библиотеку мультимедиа собственной платформы, они предлагаются только для Linux, Solaris и Windows. В частности, разработчики JMF на базе MS Windows, плохо знакомые с JMF, часто ожидают поддержки некоторых новых форматов на всех платформах, хотя такие форматы фактически поддерживаются только в MS Windows.

Хотя JMF считается очень полезным фреймворком, свободно доступная реализация, предоставляемая Oracle, страдает от недостатка обновлений и обслуживания. JMF не требует от Oracle особых усилий по обслуживанию; API не улучшался с 1999 года, а последняя новость на домашней странице JMF была опубликована в сентябре 2008 года. Хотя JMF создан для расширяемости, таких сторонних расширений немного. Кроме того, в JMF практически отсутствует функция редактирования контента. Вы можете выполнять простую запись и воспроизведение аудио и видео, но реализация, предоставленная Oracle, мало что может сделать.[6]

Платформы, выходящие за рамки тех, которые поддерживает Oracle, оставлены на усмотрение соответствующих поставщиков JRE.[7] Хотя Sun по-прежнему предоставляет форум для обсуждения своей реализации, было предпринято несколько попыток реализовать альтернативы с открытым исходным кодом.[8][9][10][11][12]

Альтернативы

В зависимости от потребностей разработчика несколько других библиотек могут быть более подходящими, чем JMF. К ним относятся:

  • Свобода для СМИ в Java (FMJ) API-совместимая альтернатива с открытым исходным кодом JMF
  • QuickTime для Java
  • IBM Toolkit для MPEG-4
  • Jffmpeg
  • vlcj
  • gstreamer-java
  • Cortado, полноценный плеер для Ogg Vorbis и Theora в Java-апплете
  • Directshow <> Java-оболочка
  • Библиотека MP3 JLayer
  • Video4Linux4Java

Пример кода

В следующем примере показан AWT диалоговое окно выбора файла и пытается загрузить и воспроизвести медиафайл, выбранный пользователем.

импорт javax.media. *;импорт java.io.File;импорт java.awt. *;общественный учебный класс TrivialJMFPlayer расширяет Рамка {    общественный статический пустота главный (Нить[] аргументы) {        пытаться {            Рамка ж = новый TrivialJMFPlayer();            ж.пакет();            ж.setVisible (истинный);        } ловить (Исключение е) {            е.printStackTrace();        }    }    общественный TrivialJMFPlayer()         бросает Ява.io.IOException,               Ява.сеть.MalformedURLException,               javax.средства массовой информации.MediaException {        FileDialog fd = новый FileDialog            (это, "TrivialJMFPlayer", FileDialog.НАГРУЗКА);        fd.setVisible(истинный);        Файл ж = новый Файл(fd.getDirectory(), fd.получить файл());        Игрок п = Управляющий делами.createRealizedPlayer            (ж.toURI().toURL());        Компонент c = п.getVisualComponent();        Добавить(c);        п.Начните();    }}

Большая часть примера связана с построением графического интерфейса пользователя AWT. Только две строки касаются JMF. Manager.createRealizedPlayer () неявно создает Источник данных из URL-представления файла создает Игрок, и понимает это означает, что все ресурсы, необходимые для воспроизведения, выделяются и инициализируются. В getVisualComponent () спрашивает Игрок для AWT Компонент подходит для использования в графическом интерфейсе. Если бы элемент управления был желателен, он был бы получен с getControlPanelComponent () и добавлен в графический интерфейс отдельно. Обратите внимание, что разработчика не волнует формат носителя - этот код одинаково хорошо работает для любого формата носителя, который JMF может импортировать и читать.

Рекомендации

  1. ^ а б JMF FAQ
  2. ^ API Java Media Framework
  3. ^ «Установщик Ubuntu для JMF». Панель запуска. Получено 4 марта 2011.
  4. ^ «Установщик подключаемого модуля JMF для Debian». Получено 4 марта 2011.
  5. ^ JMF 2.1.1 - Поддерживаемые форматы
  6. ^ JMF: ошибка, требующая исправления Крис Адамсон, 13 декабря 2005 г.
  7. ^ Инструкции по установке JMF в Mac OS X
  8. ^ JMF-Interest, официальный список обсуждения В архиве 2006-04-27 на Wayback Machine
  9. ^ Jffmpeg: плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков.
  10. ^ Fobs4JMF: еще один плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков.
  11. ^ FMJ: замена / альтернатива / реализация JMF с открытым исходным кодом
  12. ^ Xuggler: Плагин java с открытым исходным кодом, который поддерживает дополнительные кодеки и автоматически обновляется с помощью FFMPEG