Java Media Framework
開発元 サン・マイクロシステムズ
最新版
プラットフォーム クロスプラットフォーム
種別 マルチメディア用ライブラリ
ライセンス ソフトウェア利用許諾契約
公式サイト http://java.sun.com/products/java-media/jmf/
テンプレートを表示

Java Media FrameworkJMF)は、音声や動画など時系列で変化するメディアをJavaアプリケーションやアプレットに追加するためのJavaライブラリである。このオプションパッケージには、各種メディアフォーマットをキャプチャし、再生し、ストリーミングし、変換する機能がある。Java Platform, Standard Edition (Java SE) を拡張するもので、クロスプラットフォームのマルチメディアアプリケーションの開発を可能にする。

バージョンとライセンス

編集

最初の再生のみ可能なバージョンは、サン・マイクロシステムズシリコングラフィックスインテルが開発し、1997年に JMF 1.0 としてリリースされた。1999年にはサンとIBMが開発した JMF 2.0 が登場し、キャプチャ、ストリーミング、入れ替え可能なコーデック、フォーマット変換などの機能が追加された[1]

JMF 2.0 には当初 MP3 のコーデックが付属していたが、2002年に削除され、2004年に再生のみのMP3プラグインが登場した。

JMF のバイナリは特殊なライセンスで提供されており、ソースは SCSL (Sun Community Source License) で提供されている。

現在のバージョンには4つのJARファイルがあり、以下の4つのJMFベースのアプリケーションを起動するシェルスクリプトが付属している。

  • JMStudio - 単純なプレイヤーGUI
  • JMFRegistry - JMF「レジストリ」を管理するためのGUI。
  • JMFCustomizer - 特定のJMFアプリケーションが必要とするクラスだけを含むJARファイルを作成する(アプリケーションを配布する際のサイズを減らすため)。
  • JMFInit

JMF にはあらゆるJavaで動作するバージョンと、プラットフォーム固有の「パフォーマンスパック」がある。後者はそのプラットフォームのネイティブコードを含み、プラットフォーム固有のマルチメディアエンジンを利用する場合がある。JMF 2.0 では、Linux、Solaris(SPARC)、Windows 向けのパフォーマンスパックがある[1]

設計コンセプト

編集

JMF ではメディアを DataSource (JMFへのメディア読み込みに対応)と DataSink (データのエクスポートに対応)に抽象化している。メディアフォーマットの詳細にプログラマがアクセスできるような作りにはなっていない。単にソース(URLで表す)から読み込んで、再生して、処理して、エクスポートするだけである(コーデックによっては、フォーマット変換をサポートしていない)。

アプリケーションは Manager クラスのスタティックメソッドを主に使用する。

コード例

編集

以下のコード例は、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);
        p.start();
    }
}

この例の大部分は AWT GUI の構築を行っており、JMF を使っているのは2行だけである。 Manager.createRealizedPlayer() はファイルを表すURLから明示的に DataSource を作成し、Player を作成し、再生に必要なリソース割り当てと初期化を行う。getVisualComponent()Player に対して AWT Component として使うのに適したGUIを要求する。コントロールコンポーネントが必要なら、getControlPanelComponent() で要求し、別途GUIに追加すればよい。ここではメディアのフォーマットを全く気にしていない点に注意されたい。このコードはJMFが認識できる任意のメディアフォーマットを扱える。

批判と代替手法

編集

JMF はサポートしているコーデックが少ないと言われている。例えばJavaバージョンでは、MPEG-2MPEG-4RealMedia、ほとんどのQuickTimeムービー、Flash 2 以降のFlashコンテンツを再生できないし、MP3の再生にはプラグインが必要である[2]。一方、パフォーマンスパックではプラットフォームのメディアライブラリを利用できるが、Linux と Solaris と Windows でしか提供されていない。さらに Windows 用パフォーマンスパックを使っていると、実力以上に各種フォーマットをサポートしていると思い込むことがあり、他のプラットフォームではそうではないことをアプリケーション開発後に知ることになる。

また、サンはJMFを放置しているように見える。APIが最後に修正されたのは1999年で、公式サイトの最新ニュースの日付は2004年11月である。JMFは拡張可能なように構築されているが、サードパーティによる拡張はほとんどない。さらに、JMFにはメディアの編集機能がほとんどないため、利用範囲も限られる。

代替手法

編集

JMF以外にも Java 上のマルチメディア機能をサポートしたライブラリが存在する。以下に主なものを列挙する。

脚注

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

Java Desktop System

バージョン2 には以下が含まれる。 Javaプラットフォーム GNOME (Blueprintテーマ) StarOffice Mozilla Evolution MP3およびCDプレイヤー Java Media Player(Java Media Framework を使用) Pidgin RealPlayer

ストリーミング

GoogleによるHTML5ベースのWebプレーヤー。オープンソース。 Strobe Media Playback AdobeによるFlashベースのWebプレーヤー。OSMF(Open Source Media Framework)を基にしている。オープンソース。更新停止中。 MicrosoftはOSMFに向けて、Smooth

ソースコード

Java VMや.NET Frameworkなど、仮想マシンあるいは中間言語方式のフレームワーク上で動作するアプリケーションソフトウェアは、バイナリ形式にコンパイルおよびビルドされた後も型名や変数名といったプログラム自身に関するメタデータを多く含んでおり、逆コンパイルによりJava

PHP (プログラミング言語)

NET Framework上で動作させることを可能にしている。 PHPは学習コストの低さ、記述の容易さから多くのアプリケーションが開発されている。 Wikipediaを動作させているアプリケーションであるMediaWikiもPHPによって記述されている。

基本クラスライブラリ

Javaクラスライブラリと比肩しうる。 CLIの最初の実装である.NET Frameworkは、BCLの起源である。BCLにおけるほとんどの機能はMonoや.NET Coreにも移植されている。BCLはときどきFramework Class Library (FCL)

Dojo Toolkit

Dojo ToolkitはオープンソースのJavaScriptライブラリの1つで、クロスブラウザに対応したJavaScript/Ajaxアプリケーションを迅速に開発するために設計されている。2004年にAlex Russell, Dylan Schiemann, David

WebKit

Project – JavaScript ^ KDE-Darwin mailing list, "JavaScriptCore, Apple’s JavaScript framework based on KJS", 13 June 2002. ^ “The Great Browser JavaScript

Backbone.js

O'Reilly Media. p. 150. ISBN 978-1449328252. http://shop.oreilly.com/product/0636920025344.do  Ajax AngularJS JQuery Prototype JavaScript Framework 公式ウェブサイト