| 開発者 | サン・マイクロシステムズ |
|---|---|
| 安定リリース | 2.1.1e / 2003年5月23日 |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | マルチメディアライブラリ |
| Webサイト | Java Media Framework API (JMF)、Oracle.com |
Java Media Framework ( JMF ) は、オーディオ、ビデオ、およびその他の時間ベースのメディアを Java アプリケーションおよびアプレットに追加できるようにするJava ライブラリです。複数のメディア形式をキャプチャ、再生、ストリーミング、およびトランスコードできるこのオプション パッケージは、 Java Platform, Standard Edition (Java SE)を拡張し、クロスプラットフォームのマルチメディア アプリケーションの開発を可能にします。
バージョンとライセンス
JMF の最初の再生専用バージョンは、サン・マイクロシステムズ、シリコングラフィックス、インテルによって開発され、1997 年に JMF 1.0 としてリリースされました。サンとIBMによって開発された JMF 2.0 は1999 年にリリースされ、キャプチャ、ストリーミング、プラグイン可能なコーデック、およびトランスコーディングが追加されました。JMF は、Java サーバー側およびクライアント側アプリケーション フレームワークとは対照的に、サンの J2SE の「デスクトップ」テクノロジの一部としてブランド化されています。注目すべき例外は、Web ブラウザまたはアプレットビューアの基盤となる JRE 内の完全な JMF にアクセスできるJava アプレットとJava Web Startです。 [1] [2]
JMF 2.0 には、もともと MP3 デコーダーとエンコーダーが付属していました。これは 2002 年に削除され、2004 年に新しい MP3 再生専用プラグインが公開されました。
JMF バイナリはカスタム ライセンスの下で利用可能であり、ソースはSCSLの下で利用可能です。
現在のバージョンには、4 つのJARファイルと、4 つの JMF ベースのアプリケーションを起動するためのシェル スクリプトが付属しています。
- JMStudio - シンプルなプレーヤー GUI
- JMFRegistry - 設定やプラグインなどを管理する JMF「レジストリ」を管理するための GUI。
- JMFCustomizer - 特定の JMF アプリケーションに必要なクラスのみを含む JAR ファイルを作成するために使用されます。これにより、開発者はより小さなアプリケーションを出荷できます。
- JMFInit
JMF は、オール Java バージョンとプラットフォーム固有の「パフォーマンス パック」の 2 種類が用意されており、プラットフォーム固有のネイティブ コード プレーヤーや、そのプラットフォーム固有のマルチメディア エンジンへのフックを含めることができます。JMF 2.0 では、Linux、Solaris (SPARC 上)、Windows 向けのパフォーマンス パックが提供されています。[1]
2011 年 1 月、Bentokit プロジェクトの Tudor Holton は、DebianおよびUbuntu Linuxに JMF をインストールする際に長い間発生していた問題を軽減するために、JMF 用のDebian パッケージをリリースしました。このパッケージには JMF は含まれていませんが、ユーザーに JMF ライセンスを提示し、Oracle の Web サイトから取得してインストールします。[3] JMF MP3 プラグイン用の 同様のDebian パッケージ インストーラーも 2011 年 2 月に作成されました。[4]
デザインコンセプト
JMF は、操作するメディアをDataSources (JMF に読み込まれるメディア) とDataSinks (エクスポートされるデータ) に抽象化します。開発者は、特定の形式の詳細に重要なアクセスを行うことはできません。メディアは、読み込み、再生、処理、エクスポートが可能なソース (URL から取得) として表現されます (ただし、すべてのコーデックが処理とトランスコーディングをサポートしているわけではありません)。
クラスManagerは、アプリケーションの JMF との主な接点となる静的メソッドを提供します。
批判と代替案
多くの JMF 開発者は、最新の JRE で提供される JMF 実装が比較的少数の最新のコーデックと形式をサポートしていることに不満を抱いています。たとえば、その完全 Java バージョンでは、MPEG-2、MPEG-4、Windows Media、RealMedia、ほとんどのQuickTimeムービー、 Flash 2 より新しいFlashコンテンツを再生できず、広く普及しているMP3形式を再生するにはプラグインが必要です。[5] パフォーマンス パックはネイティブ プラットフォームのメディア ライブラリを使用する機能を提供しますが、Linux、Solaris、および Windows でのみ提供されます。特に、JMF を初めて使用する MS Windows ベースの JMF 開発者は、新しい形式がすべてのプラットフォームでサポートされていることを期待することがよくありますが、実際にはそのような形式は MS Windows でのみサポートされています。
JMF は非常に便利なフレームワークと考えられていますが、Oracle が提供する無料で利用できる実装は、更新とメンテナンスが不足しています。Oracle は JMF のメンテナンスにあまり力を入れていません。API は 1999 年以来拡張されておらず、JMF のホームページに最後に掲載されたニュースは 2008 年 9 月です。JMF は拡張性を重視して構築されていますが、そのようなサードパーティの拡張機能はほとんどありません。さらに、JMF にはコンテンツ編集機能が実質的に存在しません。オーディオとビデオの簡単な記録と再生はできますが、Oracle が提供する実装ではそれ以外のことはほとんどできません。[6]
Oracleがサポートしているプラットフォーム以外のプラットフォームは、それぞれのJREベンダーに任されています。[7] Sunは今でも実装に関する議論の場を提供していますが、オープンソースの代替手段を実装する取り組みもいくつか行われています。[8] [9] [10] [11] [12]
代替案
開発者のニーズによっては、JMF よりも適したライブラリが他にもいくつかあります。これには次のものが含まれます。
- Freedom for Media in Java (FMJ) JMF と互換性のある API オープンソース代替品
- Java 用 QuickTime
- MPEG-4 用 IBM ツールキット
- ジェフエムペグ
- 翻訳
- gstreamer-java
- Cortado は、Java アプレットで Ogg Vorbis と Theora の完全なプレーヤーです。
- Directshow <> Java ラッパー
- JLayer MP3 ライブラリ
- ビデオ4Linux4Java
- Java MP4 パーサー Java MP4 パーサー
コード例
次の例は、AWTファイル選択ダイアログを示しており、ユーザーが選択したメディア ファイルの読み込みと再生を試みます。
javax.media.*をインポートします。java.io.Fileをインポートします。java.awt .*をインポートします。
パブリッククラスTrivialJMFPlayerはFrameを拡張します{
public static void main ( String [ ] args ) { try { Frame f = new TrivialJMFPlayer ( ) ; f.pack ( ) ; f.setVisible ( true ) ; } catch ( Exception e ) { e.printStackTrace ( ) ; } } public TrivialJMFPlayer ( )は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 行だけです。 は 、ファイルの URL 表現から を Manager.createRealizedPlayer()暗黙的に作成し、 を作成してそれを実現します。つまり、再生に必要なすべてのリソースが割り当てられ、初期化されます。 は、GUI での使用に適したAWT を に要求します。コントロール コンポーネントが必要な場合は、 で取得して GUI に別途追加します。開発者はメディアの形式を気にする必要がないことに注意してください。このコードは、JMF がインポートして読み取ることができるすべてのメディア形式で同様に機能します。
DataSourcePlayergetVisualComponent()PlayerComponentgetControlPanelComponent()
参考文献
- ^ JMF FAQより
- ^ Java メディアフレームワーク API
- ^ “JMF 用の Ubuntu インストーラー”.ランチパッド。 2011 年 1 月 5 日。2011 年3 月 4 日に取得。
- ^ 「Debian 用 JMF プラグインインストーラー」。2011 年 2 月 23 日。2011年3 月 4 日閲覧。
- ^ JMF 2.1.1 - サポートされている形式
- ^ JMF: やり直しを求めるのは間違い、クリス・アダムソン著、2005年12月13日
- ^ Mac OS X での JMF のインストール手順
- ^ JMF-Interest、公式ディスカッションリスト 2006-04-27 にWayback Machineでアーカイブ
- ^ Jffmpeg: 追加のコーデックをサポートする JMF オープンソース プラグイン
- ^ Fobs4JMF: 追加のコーデックをサポートする別の JMF オープンソース プラグイン
- ^ FMJ: JMF のオープンソースの代替/代替/実装
- ^ Xuggler: 追加のコーデックをサポートし、FFMPEG で自動的に最新の状態に保たれるオープンソースの Java プラグイン
