Java Media Framework

Java Media Framework
Тип мультимедийный фреймворк и библиотека функций
Разработчик Oracle
Написана на Java
Дата выпуска 1997
Аппаратная платформа кроссплатформенность
Последняя версия
Лицензия пользовательское соглашение[2]
Сайт oracle.com/java/t… (англ.)

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

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

Текущая версия поставляется с набором JAR файлов и сценариев для запуска приложений использующих JMF:

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

Основные принципы

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

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

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

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

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

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

Пример

Данная программа отображает 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

Примечания

  1. JMF 2.1.1e Software Downloads (англ.)
  2. http://www.oracle.com/technetwork/java/javase/license-135825.html
  3. JMStudio User’s Guide. Дата обращения: 15 февраля 2015. Архивировано 15 февраля 2015 года.
  4. JMFRegistry User’s Guide. Дата обращения: 15 февраля 2015. Архивировано 15 февраля 2015 года.
  5. JMF 2.1.1 — Supported Formats. Дата обращения: 14 февраля 2015. Архивировано 14 февраля 2015 года.

Ссылки

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

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.