Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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 абстрагирует носители, с которыми работает, на DataSources (для носителей, считываемых в JMF) и DataSinks (для экспортируемых данных). Это не дает разработчику значительного доступа к деталям любого заданного формата; скорее, мультимедиа представлены как источники (сами получаемые из 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()запрашивает PlayerAWT, Componentподходящий для использования в графическом интерфейсе. Если бы компонент управления был желателен, он был бы получен getControlPanelComponent()и добавлен к графическому интерфейсу отдельно. Обратите внимание, что разработчика не волнует формат носителя - этот код одинаково хорошо работает для любого формата носителя, который JMF может импортировать и читать.

Ссылки [ править ]

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