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

📚 Artikel Terkait di Wikipedia

.NET Framework

популярность платформу Java компании Sun Microsystems (ныне торговая марка Sun Microsystems принадлежит компании Oracle). Хотя .NET Framework является патентованной

JavaScript

Архивировано 22 августа 2011 года. Cappuccino Web Framework — Build Desktop Class Applications in Objective-J and JavaScript (англ.). Дата обращения: 12 октября

Java Desktop System

CD-проигрыватель Java Media Player, входящий в состав Java Media Framework Pidgin RealPlayer Также Java Desktop System включает бесплатные средства администрирования

Список Java API

три типа Java API: официальный основной Java API, содержащийся в JDK или JRE, в одном из вариантов Java. Три варианта платформы Java: Java ME (Micro

Мультимедийный фреймворк

Helix DNA Phonon xine Media Lovin' Toolkit libVLC Проприетарные кроссплатформенные: Adobe Director Adobe Flash Java Media Framework (JMF) Microsoft Silverlight

Java

Framework; для документирования используется утилита Javadoc. Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM) —

React Native

исходным кодом для разработки нативных мобильных и настольных приложений на JavaScript и TypeScript, созданный Facebook, Inc. (Ныне Meta). React Native поддерживает

Gradle

Java. id 'application' } repositories { // Use Maven Central for resolving dependencies. mavenCentral() } dependencies { // Use JUnit test framework.