Java Media Framework () — библиотека, облегчающая разработку программ, работающих с аудио и видео.

Во второй версии библиотеки была добавлена поддержка кодирования и декодирования MP3, но позже в 2000 году она была исключена из поставки. В 2004 году было опубликовано дополнение для воспроизведения MP3 данных. Скомпилированные файлы доступны под различными лицензиями, а код под SCSL.

Текущая версия поставляется с набором JAR файлов и сценариев для запуска приложений использующих JMF: JMStudio — простой плеер с графическим интерфейсом JMFRegistry — графическая утилита для работы с реестром, конфигурирующим различные настройки, дополнения и пр. JMFCustomizer — программа для создания минималистичных проставок JMF с необходимыми классами, используемыми в приложении, благодаря которой разработчики могут уменьшить размер конечного приложения JMFInit

Основные принципы Библиотека абстрагирует работу с мультимедиа посредством DataSource для импорта и DataSink для экспорта мультимедийных данных. Данный подход позволяет разработчикам одинаково работать со всеми форматами данных, поддерживаемых JMF.

Класс Manager предоставляет статические методы, наиболее часто используемые для работы с библиотекой.

Критика и альтернативы Одним из основным недостатков библиотеки можно назвать отсутствие поддержки многих современных форматов. Например, на всех платформах Java невозможно воспроизведение MPEG-2, MPEG-4, Windows Media, RealMedia, большинства видео QuickTime, данных Flash версий больше 2-й, а для воспроизведения MP3 требуется дополнение. А большинство дополнений улучшающих быстродействие доступны только для Linux, Solaris и Windows.

Альтернативы Название Описание Состояние Лицензия Сайт Freedom for Media in Java (FMJ) реализация JMF с открытым исходным кодом не обновлялся с 2007 года - Java Sound API - вышла в апреле 2004 - QuickTime for Java (en) разрабатывалась Apple не разрабатывается - - IBM Toolkit for MPEG-4 - - - Jffmpeg Частичный порт FFMPEG на Java для использования с JMF не обновлялся с 2006 года - jvlc - не разрабатывается - vlcj Позволяет встраивать плеер VLC в AWT или Swing приложение активное - gstreamer-java библиотека для использования gstreamer 0.10 в Java почти не развивается - Cortado Ogg Vorbis и Theora Java applet плеер - - Directshow <> Java Wrapper - - - Fobs4JMF - не разрабатывается - JLayer MP3 library - - - Xuggler - не разрабатывается GPLv3 или LGPL Video4Linux4Java библиотека для доступа к v4l и v4l2 не обновлялся с августа 2013 года GPLv3

Пример Данная программа отображает AWT диалог открытия а и пытается проиграть выбранный файл.

import javax.media.*; import java.io.File; import java.awt.*;

public class TrivialJMFPlayer extends Frame {

public static void main (String[] args) { try { Frame f = new TrivialJMFPlayer(); f.pack(); f.setVisible (true); } catch (Exception e) { e.printStackTrace();

public TrivialJMFPlayer() throws java.io.IOException, java.net.MalformedURLException, javax.media.MediaException { FileDialog fd = new FileDialog(this, "TrivialJMFPlayer", FileDialog.LOAD); fd.setVisible(true); File f = new File(fd.getDirectory(), fd.getFile()); Player p = Manager.createRealizedPlayer(f.toURI().toURL()); Component c = p.getVisualComponent(); add(c);/*this code dosn't work =P*/ p.start();

Большая часть текста программы предназначена для работы с AWT, в то время как только 2 строчки используют JMF. Manager.createRealizedPlayer() неявно создаёт DataSource из полученного URL файла, с которым в дальнейшем работает объект Player. Метод getVisualComponent() создаёт Component, который может в дальнейшем использоваться как часть графического интерфейса. Если требуются элементы управления воспроизведением, то необходимо дополнительно вызвать метод getControlPanelComponent(), который создаст объект, который можно также добавить в интерфейс программы.

Данный пример одинаково подходит для всех типов мультимедиа, поддерживаемых библиотекой JMF.

См. также Java OpenGL — библиотека для работы с OpenGL

Примечания

Ссылки Руководство по воспроизведению аудио и видео с использованием JMF

Категория:Java Категория:Мультимедийные фреймворки