WikiDer > Java Media Framework
JMF просто JMStudio приложение играет QuickTime фильм | |
Разработчики) | Sun Microsystems |
---|---|
Стабильный выпуск | 2.1.1e / 23 мая 2003 г. |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Библиотека для мультимедиа |
Интернет сайт | 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) и DataSink
s (для экспортируемых данных). Это не дает разработчику значительного доступа к деталям любого заданного формата; скорее, мультимедийные данные представлены как источники (сами получаемые из 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 может импортировать и читать.
Рекомендации
- ^ а б JMF FAQ
- ^ API Java Media Framework
- ^ «Установщик Ubuntu для JMF». Панель запуска. Получено 4 марта 2011.
- ^ «Установщик подключаемого модуля JMF для Debian». Получено 4 марта 2011.
- ^ JMF 2.1.1 - Поддерживаемые форматы
- ^ JMF: ошибка, требующая исправления Крис Адамсон, 13 декабря 2005 г.
- ^ Инструкции по установке JMF в Mac OS X
- ^ JMF-Interest, официальный список обсуждения В архиве 2006-04-27 на Wayback Machine
- ^ Jffmpeg: плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков.
- ^ Fobs4JMF: еще один плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков.
- ^ FMJ: замена / альтернатива / реализация JMF с открытым исходным кодом
- ^ Xuggler: Плагин java с открытым исходным кодом, который поддерживает дополнительные кодеки и автоматически обновляется с помощью FFMPEG