Разработчики) | Sun Microsystems |
---|---|
Стабильный выпуск | 2.1.1e / 23 мая 2003 г. |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Библиотека для мультимедиа |
Веб-сайт | Java Media Framework API (JMF), на Oracle.com |
Media Framework Java ( JMF ) является Java библиотекой , которая позволяет аудио, видео и другую основанного на время средства массовой информации , которые будут добавлены в Java - приложения и апплеты. Этот дополнительный пакет, который может захватывать, воспроизводить, транслировать и перекодировать несколько форматов мультимедиа , расширяет платформу Java, Standard Edition (Java SE) и позволяет разрабатывать кроссплатформенные мультимедийные приложения.
Версии и лицензирование [ править ]
Первоначальная версия JMF, предназначенная только для воспроизведения, была разработана Sun Microsystems , Silicon Graphics и Intel и выпущена как JMF 1.0 в 1997 году. JMF 2.0, разработанный Sun и IBM , вышел в 1999 году и добавил кодеки для захвата, потоковой передачи и подключаемых модулей. , и транскодирование. JMF позиционируется как часть настольной технологии J2SE от Sun, в отличие от серверных и клиентских структур приложений Java. Заметными исключениями являются Java-апплеты и Java Web Start , которые имеют доступ ко всей JMF в базовой JRE веб-браузера или программы просмотра апплетов. [1] [2]
JMF 2.0 изначально поставлялся с декодером и кодировщиком MP3. Это было удалено в 2002 году, а в 2004 году был опубликован новый плагин, предназначенный только для воспроизведения MP3.
Бинарные файлы JMF доступны по специальной лицензии, а исходный код доступен по SCSL .
Текущая версия поставляется с четырьмя файлами JAR и сценариями оболочки для запуска четырех приложений на основе 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 абстрагирует носители, с которыми работает, на DataSource
s (для носителей, считываемых в JMF) и DataSink
s (для экспортируемых данных). Это не дает разработчику значительного доступа к деталям любого заданного формата; скорее, мультимедиа представлены как источники (сами получаемые из URL-адресов), которые можно считывать и воспроизводить, обрабатывать и экспортировать (хотя не все кодеки поддерживают обработку и перекодирование).
Manager
Класс предлагает статические методы , которые являются основным контактным пунктом-с JMF для приложений.
Критика и альтернативы [ править ]
Многие разработчики JMF жаловались, что реализация JMF, поставляемая в современных JRE, поддерживает относительно небольшое количество современных кодеков и форматов. Его версия, полностью построенная на Java, например, не может воспроизводить MPEG-2 , MPEG-4 , Windows Media , RealMedia , большинство фильмов QuickTime , Flash- контент новее, чем 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 и попытка загрузить и воспроизвести медиафайл, выбранный пользователем.
import javax.media. * ; import java.io.File ; import java.awt. * ;открытый класс TrivialJMFPlayer расширяет Frame { public static void main ( String [] args ) { попробуйте { Frame f = new TrivialJMFPlayer (); f . pack (); f . setVisible ( правда ); } catch ( исключение e ) { e . printStackTrace (); } } public TrivialJMFPlayer () выбрасывает java . io . IOException , java . нетто . MalformedURLException , javax . СМИ . MediaException { FileDialog fd = new FileDialog ( это , "TrivialJMFPlayer" , FileDialog . ЗАГРУЗИТЬ ); fd . setVisible ( правда ); Файл f = новый файл ( fd . GetDirectory (), fd . GetFile ()); Игрок p = Менеджер. createRealizedPlayer ( е . Touri (). toURL ()); Компонент c = p . getVisualComponent (); добавить ( с ); стр . start (); } }
Большая часть примера связана с построением графического интерфейса пользователя AWT. Только две строки касаются JMF. Manager.createRealizedPlayer()
неявно создает DataSource
из URL-представления файла, создает Player
и реализует его, что означает, что все ресурсы, необходимые для воспроизведения, выделяются и инициализируются. The getVisualComponent()
запрашивает Player
AWT, Component
подходящий для использования в графическом интерфейсе. Если бы компонент управления был желателен, он был бы получен getControlPanelComponent()
и добавлен к графическому интерфейсу отдельно. Обратите внимание, что разработчика не волнует формат носителя - этот код одинаково хорошо работает для любого формата носителя, который JMF может импортировать и читать.
Ссылки [ править ]
- ^ a b JMF FAQ
- ^ API Java Media Framework
- ^ "Установщик Ubuntu для JMF" . Launchpad . Проверено 4 марта 2011 года .
- ^ "Установщик подключаемого модуля JMF для Debian" . Проверено 4 марта 2011 года .
- ^ JMF 2.1.1 - Поддерживаемые форматы
- ^ JMF: Ошибку Просить , чтобы быть переделана Крис Адамсон, 13 декабря 2005 года
- ^ Инструкции по установке JMF в Mac OS X
- ^ JMF-Интерес, официальный список обсуждения архивации 2006-04-27 в Wayback Machine
- ^ Jffmpeg: плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков
- ^ Fobs4JMF: еще один плагин JMF с открытым исходным кодом для поддержки дополнительных кодеков.
- ^ FMJ: замена / альтернатива / реализации JMF с открытым исходным кодом
- ^ Xuggler : плагин Java с открытым исходным кодом, который поддерживает дополнительные кодеки и автоматически обновляется с помощью FFMPEG.