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
Примечания
- ↑ JMF 2.1.1e Software Downloads (англ.)
- ↑ http://www.oracle.com/technetwork/java/javase/license-135825.html
- ↑ JMStudio User’s Guide. Дата обращения: 15 февраля 2015. Архивировано 15 февраля 2015 года.
- ↑ JMFRegistry User’s Guide. Дата обращения: 15 февраля 2015. Архивировано 15 февраля 2015 года.
- ↑ 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.
- 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:
- 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.
- 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.
- 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.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.