本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

ただ今上映中: オンラインMPEG-4映画を作る

IBM Toolkit for MPEG-4 SDKで用意された、そのまま使えるJavaコンポーネントを探る

Sing Li (westmakaha@yahoo.com), Author, Wrox Press
Photo of Sing Li
Sing LiはWrox Pressから出版されている多数の本の著者で、Professional Apache Tomcat 、Early Adopter JXTA 、Professional Jini などを執筆しています。技術雑誌に頻繁に寄稿しており、P2P発展に関する熱心なエバンジェリスト(伝道者)でもあります。コンサルタント兼ライターであるSingの連絡先はwestmakaha@yahoo.comです。

概要: ネットワークを通して大観衆にインタラクティブなマルチメディア体験を配信するのは不可能だと思いますか? 考え直してください! 広く普及したブロードバンド接続と強力なPCによって、映像やマルチメディア・コンテンツをネットワーク経由で配信することが現実になっています。IBM alphaWorks Toolkit for MPEG-4に少し付け加えれば、今すぐにでも自分独自のWeb映画を作ることができるのです。著名なライターでありJava開発者でもあるSing Liが、SDKライブラリーを使ってカスタムのJava MPEG-4プレーヤーをどのようにコード化するか、またオンデマンドでダウンロードできるMPEG-4プレーヤーを作るためのアプレットの使い方、配信用のコンテンツの用意の仕方を解説します。

日付:  2004年 11月 02日
レベル:  初級 この記事の原文:  英語
アクティビティー: 1498 ビュー
お気軽にご意見・ご感想をお寄せください: 


ネットワークを通して大観衆にインタラクティブなマルチメディア体験を配信することは今や夢ではありません。初期の試みは、恐ろしく高価な通信コストと、高圧縮画像をリアルタイムにデコードできるPCがほとんど無かったことことから困難を極めていました。今やブロードバンド・インターネットと高速化を続けるPCプロセッサーのおかげで、障害が無くなってきたのです。

MPEG-4はインタラクティブなマルチメディア・コンテンツをネットワーク経由で保存し、オーサリングし、エンコードし、そして配信するための、一連の国際標準です(囲み記事 MPEG-4について を参照)。ごく最近まで、MPEG-4の核心部分の技術は気軽に近づけるようなものではありませんでした。MPEG-4に関する実験を行っている人達の大部分は、圧縮アルゴリズムの研究者やコンスーマー・エレクトロニクスの設計エンジニア、あるいは独自ソフトウェアの開発者達でした。

IBM Toolkit for MPEG-4とその関連のソフトウェア開発キット(SDK)は、IBM alphaWorksから入手できます。これを使用すると、Java 2プラットフォームをサポートするPCを持つ人であれば誰でも、MPEG-4技術にアクセスできるようになります。このツールキットでは、再利用可能なJavaソフトウェア・コンポーネントと、MPEG-4プレーヤーを作ったりMPEG-4コンテンツを扱ったりするためのツールが実際的なセットとしてまとめられています。ですからこの実稼働品質のツールを、すぐにでも動かすことができるのです。

この記事では、SDKとツールキットによって何ができるかを、弾丸列車に乗って見て行きます。まず、SDKライブラリーを使って、カスタムのJava MPEG-4プレーヤーをコード化します。次にアプレットを使って、オンデマンドでダウンロードできるMPEG-4プレーヤーを作ります。そして最後に、MPEG-4コンテンツ配信の様々な方法と、配信用コンテンツを準備するための役に立つツールについて学びます。

カスタム化したMPEG-4プレーヤーを作る

MPEG-4 Toolkit SDKを使うと、カスタム化したMPEG-4ムービー・プレーヤーを簡単に作ることができ、Javaのコーディングを追加する必要はほとんどありません。図1はカスタム化したMPEG-4プレーヤーである「developerWorks Cinema」を示しています。

MPEG-4について

Moving Picture Experts Group (MPEG) はInternational Organization for Standardization (ISO) の中のワーキング・グループの一つです。このグループでは、ビデオCD(VCD)フォーマットを生んだMPEG-1仕様を作成し、また今人気のディジタル・バーサタイル・ディスク(DVD)フォーマットを生んだMPEG-2、そしてMP3オーディオ・フォーマットを作りました。MPEG-4国際標準では、インタラクティブなマルチメディア・コンテンツの作成、オーサリング、エンコード、そしてネットワーク経由あるいはストレージ・メディアを通しての配信を扱います。 多くのDVDプレーヤーを含め、主なコンスーマー・エレクトロニクス・メーカーが販売する新しい機器はMPEG-4の再生をサポートしています。デジタル・カメラやデジタル・ビデオカメラ(DVカムコーダー)も、MPEG-4ムービーのキャプチャー機能を備えている場合が多くなっています。MPEG-4ベースの、デジタル・カメラとカムコーダーが一体となった新世代の機器も、間もなく市場に登場しようとしています。これらの機器は完全半導体ベースで、手のひらに収まるほどの大きさしかありません。

図1. カスタム化したMPEG-4プレーヤー
A customized developerWorks MPEG-4 player

IBM Toolkit for MPEG-4のダウンロード

IBM Toolkit for MPEG-4のダウンロード・サイト( 参考文献 )には無数のダウンローダブル・バイナリーがあります。この記事で必要なのは、IBMToolkitForMpeg4L1SDKxxxx.zipファイルとIBMAppletForMpeg4xxxx.zipファイルのみです(xxxxはファイルのリリース日を表します)。ただし、自分のMPEG-4コンテンツを準備するためのツールとして、IBMToolkitForMpeg4xxxx.zipも恐らく必要になるでしょう。この記事のコードは、このツールキットの1.2.3バージョンに基づいています。ダウンロード( ダウンロード のセクションを見てください)にあるライブラリーJARファイルをどこに置くかについては、コード・ディストリビューションの中にあるREADME.TXTファイルを見てください。

このプレーヤーは、コード・ディストリビューション( Download セクションを見てください)の中にあるplayer.batファイルを実行すれば試すことができます。またsurf.mp4というMPEG-4ビデオ・ファイルもあるので、すぐにムービーを再生することもできます。プレーヤーをスタートする前に、IBMMpeg4SDKL1 JARファイルをlibディレクトリーにコピーすることを忘れないでください(ツールキットのダウンロード情報に関しては、囲み記事 IBM Toolkit for MPEG-4のダウンロード を見てください)。

図1で、ムービー・プレーヤーのウィンドウのタイトルと、シネマ・スクリーンの上のカスタム・ロゴに注目してください。こうしたタイトルは、player.propと呼ばれるプロパティー・ファイルを通してプレーヤーに与えることになります。これをリスト1に示します。


リスト1. player.propを使ってMPEG-4プレーヤーをカスタム化する
                
movie=surf.mp4
ttitle=developerWorks Cinema
htitle=<html><font size=+1 color=white>developer</font><font size=+2
   color=white>Works</font><font size=+1 color=yellow> Cinema</font></html>
width=320
height=340
			

リスト1で、 htitle プロパティーは、Java Swing JLabelコンポーネントに渡されるHTMLストリングです。JLabelは直接HTMLを描画できるので、図1のように「developerWorks Cinema」というロゴが描画されることになります。

このプレーヤーはplayer.propファイルにあるプロパティーを変更することによって、プレーヤーのソース・コードを再コンパイルすることなく、完全に設定し直すことができます。表1はそうしたプロパティーを表しています。


表1. player.propのプロパティー
プロパティー 説明
movie 再生すべきMPEG-4ムービーのファイル位置またはURL
ttitle プレーヤー・ウィンドウのタイトル・バーに表示するタイトルの文字列
htitle シネマ・スクリーンの上に表示される、HTMLベースのタイトル
width , height プレーヤー・ウィンドウの幅と高さ

ソース・コードはリスト2に示すように、 com.ibm.dw.mpeg4.MoviePlayer と呼ばれるクラスで構成されています。


リスト2. カスタム化可能なMoviePlayerのソース・コード
                
package com.ibm.dw.mpeg4;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import player.*;


public class MoviePlayer extends JFrame {
    private static final String PROP_FILE_NAME = "player.prop";
    private static final String MOVIE_PROP_NAME= "movie";
    private static final String TEXTTITLE_PROP_NAME = "ttitle";
    private static final String HTMLTITLE_PROP_NAME = "htitle";
    private static final String WIDTH_PROP_NAME = "width";
    private static final String HEIGHT_PROP_NAME = "height";
    private JPanel logoPanel;
    private PlayerControl Player;
    
    public MoviePlayer(String txtName, String htmlName, int Width, int Height) {
        Player = PlayerFactory.createMPEG4Player();
        logoPanel = new JPanel();
        
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {exit();}
        });
        
        getContentPane().setLayout(new BorderLayout());
        
        Player.setAutoSize(false);
        logoPanel.setBackground(Color.BLACK);
        logoPanel.add( new JLabel( htmlName));
        
        getContentPane().add( BorderLayout.NORTH, logoPanel);
        setTitle(txtName);
        setSize(Width , Height);
        show();
    }
    
    
    
    public static void main(String[] args) throws Exception {
        Properties prop = new Properties();
        FileInputStream fis =
        new FileInputStream(PROP_FILE_NAME);
        prop.load(fis);
        String movieName =
        prop.getProperty(MOVIE_PROP_NAME);
        
        MoviePlayer app = new MoviePlayer(
        prop.getProperty(TEXTTITLE_PROP_NAME), 
        prop.getProperty(HTMLTITLE_PROP_NAME),
        getIntProp(prop, WIDTH_PROP_NAME, 300),
        getIntProp(prop, HEIGHT_PROP_NAME, 200)
        );
        
        if (movieName != null)
            app.playMovie(movieName);
    }
    
    
    private  void playMovie(String loc)  throws Exception {
        getContentPane().add(BorderLayout.CENTER, Player.getRendererComponent());
        validate();
        Player.open(loc);
        Player.start();
    }
    
    
    private void exit() {
        Player.stopUrl();
        remove(Player.getRendererComponent());
        dispose();
        System.exit(0);
    }
    
    private static int getIntProp(Properties prop, String name, int defaultVal) {
        String tmpValue = prop.getProperty( name);
        int retval = defaultVal;
        if (tmpValue != null) {
            try {
                retval = Integer.parseInt(tmpValue);
            }
            catch (Exception ex) {
             /* fall through with retval=0 */
            }
        }
        return retval;
    }
    
}
			

リスト2では、 MoviePlayer はSwingコンポーネントから作られています。 com.ibm.dw.mpeg4.MoviePlayer はJFrameです。図2は、 MoviePlayer でのコンポーネントの配置を示しています。


図2. MoviePlayerにおけるSwingコンポーネントの配置
Swing components layout of MoviePlayer

SDKライブラリー・クラス/インターフェースが2つ必要になります。

  • Player.PlayerFactory はMPEG4プレーヤーのインスタンスを取得します。
  • Player.PlayerControl はプレーヤー・インスタンスにアクセスするために使用するインターフェースです。

図3は、 リスト2 のコードがどのようにカスタムMPEG-4プレーヤーを生成、構成するかを示しています。


図3. カスタムのMPEG-4プレーヤーを作る
Creating the Custom MPEG-4 Player

図3を見ると、このライブラリーのMPEG-4プレーヤー・インスタンスが PlayerControl インターフェースを通してのみアクセスされていることが分かります。プレーヤー・インスタンスを取得するためには、 MoviePlayer のコンストラクターの最初の行にある、 PlayerFactory クラスの静的ファクトリー・メソッドを呼ぶ必要があります。

Player = PlayerFactory.createMPEG4Player();

PlayerControl インターフェースには、プレーヤーの振る舞いを制御する多くのメソッドがあります。これは、ムービーを表示するためのGUIコンポーネントを取得するためのインターフェースでもあります。表2は、 PlayerControl インターフェースの中で最も頻繁に使用されるメソッドを示しています。


表2. PlayerControlインターフェースのメソッド
メソッド 説明
setAutoSize() プレーヤーがコンテナーを強制的にリサイズするかどうかを決定します。上の例では偽(false)に設定されています。
getRendererComponent() ムービーを表示するために使用する、 java.awt.Component ベースのオブジェクトを取得します。
open() MPEG-4コンテンツをオープンし、いつでも再生できるようにします。
start() コンテンツの再生を開始します。ムービーはレンダラー・コンポーネント上で表示されます。

PlayerControl インターフェースの他のメソッドに関する、さらに詳しい記述についてはSDKのJavadocを見てください。

シネマ・スクリーンの上でMPEG-4ムービーを表示するには、 PlayerControl インターフェースの getRendererComponent() を呼ぶ必要があります。このコールは java.awt.Component を返します。 リスト2playMovie() メソッド内部にある次のコードは、 java.awt.ComponentMoviePlayer JFrameの子コンポーネントにします。

getContentPane().add(BorderLayout.CENTER, Player.getRendererComponent());


アプレット・ベースのプレーヤーを作る

スタンドアローンのプレーヤーは、ハードディスクから、あるいはネットワーク経由でビデオを再生しますが、そのためにはまず、ユーザーのPC上でプレーヤー・ソフトウェアが使用できるようになっている必要があります。これは、皆さんが自分のショーをマルチメディアDVDやCD-ROMで配布する時には問題になりません。ところがユーザーの大部分がインターネットからそのショーにアクセスする場合には、皆さんはシン・クライアント(thin-client)でオンデマンドでのダウンロード・ソリューションの方を選ぶでしょう。

シン・クライアントのソリューションでは、ユーザーがビデオを見るために必要なのはブラウザーのみです。ブラウザーがそのシネマのWebページに到達すると、次のシーケンスが起こります。

  1. 小さな、簡略版のビューアー(アプレット)がユーザーのマシンにダウンロードされます。
  2. ユーザーのマシンのJVMが起動し、ビューアー・アプレットが実行します。
  3. ビューアーからWebサーバー(または同じマシンのストリーミング・サーバー)に対して接続し、ネットワーク用のビデオにアクセスします。

シン・クライアント・ソリューションを構成するには、IBMAppletForMpeg4xxxx.zipダウンロードにある、2つのJARファイルが必要になります(囲み記事 IBM Toolkit for MPEG-4のダウンロード を見てください)。SDKを使えばカスタムのアプレット・ソリューションを構成できるのですが、この記事ではアプレット・パッケージを利用します。

RTSP/RTP

Real Time Streaming Protocol (RTSP) はコロンビア大学とNetscape Communications、RealNetworksで共同開発され、IETF (Internet Engineering Task Force) ではRFC 2326として提案勧告(Proposed Standard)とされています。これはIPネットワークでマルチメディア・ストリーミングを制御するプロトコルです。RTSPはメディア・タイプやオーディオ/ビデオ・コーデック、トランスポート・プロトコルのネゴシエーションに使われます。また再生中のストリームに対して、時間によるサーチ制御をすることもできます。一般的にはRTSPは、トランスポート・プロトコルとしてRTP (Realtime Transport Protocol) と組み合わせて使われます。RTPはIETF RFC 1889で規定されており、ITU標準H.255.0でもあります。
  • IBMAppletForMpeg4.jar には、HTTPプロトコルを使って配信するための、MPEG-4ファイル用の軽量アプレット・プレーヤーがあります。MPEG-4ファイルはIBMインターリーブ・フォーマット(IBM interleaved format)である必要があります(この後にある、 HTTPを使った、Webサーバー・ベースの配信 を参照)。
  • IBMISMAAppletForMpeg4.jar には、通常Real Time Streaming Protocol (RTSP) とRealtime Transport Protocol (RTP) (囲み記事 RTSP/RTP を参照) を使ってInternet Streaming Media Alliance (ISMA) 準拠のストリーミング・サーバーからMPEG-4ファイルを配信するための、軽量アプレット・プレーヤーがあります。

これからお見せする例では、IBMAppletForMpeg4.jarファイルにあるHTTPプロトコル・アプレットを使います。このアプレットをWebページ、つまりリスト3に示すdwcinema.htmlファイルの中に埋め込むわけです。




リスト3. M4Appletを使った、シン・クライアント・プレーヤーの実装
                
<html>
<head>
  <title>developerWorks Cinema</title>
  <style>
  h1 { 
     color:white;   
     font-weight:normal; 
     font-size:20pt; 
     font-family:arial,helv,helvetica,sans-serif;
     }
  </style>
</head>
<body bgcolor="black">
  <h1>
    developer<b>Works</b> <font color="yellow">Cinema</font>   
  </h1>
  <applet code="M4Applet.class" archive="IBMAppletForMpeg4.jar"
    width="320" height="300">
    <param name="url"  value="surf.m4x" />   
    <param name="panel"  value="None" />
  </applet>
</body>
</html>
			

リスト3では、このページにJavaアプレットを埋め込むために <applet> タグを使っています。次に示すような <applet> タグに関する幾つかの属性が、ブラウザーとJavaプラグイン( 参考文献 )に対して、どのようにアプレットを表示するかを指示しています。

  • code : 実行すべきJavaクラス。このクラスは java.applet.Applet のサブクラスである必要があります。リスト3の例では、M4Appletプレーヤーが実行すべきクラスです。
  • archive : 実行可能アプレット・クラスを探し出すために使用するJARファイル。リスト3ではIBMAppletForMpeg4.jarを使っています。
  • width , height : MPEG-4ムービー・プレーヤー・アプレットの表示を確保するための、ブラウザー表示でのピクセル数で表した幅と高さ。

<applet> のタグのボディにあるアプレットを設定するために次のようなパラメーターを渡すと、アプレットがこうしたパラメーターを使って初期化を行います。

  • url : 再生すべきムービーを指すURL。リスト3では、インターリーブしたMPEG-4ムービーを指しています。
  • panel : コントロール・パネルの設定。持ち得る値としては、 NoneMiniBasic または Default があります。コントロール・パネルが見えている時には、ユーザーはコントロール・パネルを使って再生を制御することができます(開始、停止、中断、消音、など)。

アプレット・プレーヤーを試すには、次のステップに従います。

  1. バイナリーFTPを使って、surf.m4xというMPEG-4ビデオとIBMAppletForMpeg4.jarライブラリーを、Webサーバーに転送します。
  2. ASCII FTPを使って、Webサーバーの同じディレクトリーにdwcinema.htmlファイルを転送します。
  3. クライアント・マシンのWebブラウザーを使って、Webサーバーからdwcinema.htmlファイルにアクセスします。

図4は、Internet Explorerからアクセスしたアプレット・プレーヤーです。


図4. Internet Explorerで見るアプレット・オンデマンド・プレーヤー
Applet On-demand Player on Internet Explorer

図5は同じアプレット・プレーヤーを、Netscape 7ブラウザーを使ったクライアントから見たものです。


図5. Netscape 7で見るアプレット・オンデマンド・プレーヤー
Applet On-demand Player on Netscape 7

ISMAと3GPP

Internet Streaming Media Alliance (ISMA) はオーディオやビデオ、データなどを、IPネットワークからストリーミングで送る上での標準策定とその普及を図るための業界委員会です( 参考文献 )。3GPPは3rd Generation Partnership Projectという国際テレコミュニケーションの標準化団体であり、「第三世代(3G)」携帯電話ネットワークを通して、表現力豊かなメディアを携帯電話やPDAで表示/再生するための仕様を策定しています。

配信用のMPEG-4コンテンツを用意する

MPEG-4ムービーのソースとしては下記のようなものが考えられます。

  • CD-ROMやDVD-ROM、ハード・ディスクのようなストレージ・メディア
  • Apache( 参考文献 )などのWebサーバーを通したネットワーク接続
  • Darwin( 参考文献 )のような、特別なストリーミング・メディア・サーバーを通したネットワーク接続

ストレージ・メディアから再生されるMPEG-4コンテンツには特別な準備は何も要りませんが、ネットワーク経由での再生では、どのような伝送手段を使用するかによって、準備が必要になります。

HTTPを使った、Webサーバー・ベースの配信

MPEG-4コンテンツの配信にWebサーバーを使用する場合には、まずコンテンツをインターリーブ・フォーマットに変換する必要があります。このツールキットでは、MPEG-4標準のM4Muxインターリーブに基づいたIBM固有のインターリーブ・フォーマットをサポートしており、これはHTTPを使った配信で非常にうまく動作します。このフォーマットのファイルは先のアプレット例のsurf.m4xビデオで分かる通り、.m4x拡張子を持っています。ツールキットのAVgenツールを使うと、通常のMPEG-4ファイルをインターリーブ・フォーマットに変換することができます。

Webサーバーを使用したMPEG-4コンテンツの配信には次のような利点があります。

  • コストが低い
  • 特別なストリーミング・サーバーを必要としない
  • 安価な共有ホスティング・サービスでも動作する
  • HTTPはほとんどのファイアーウォールを通過でき、より多くの人にコンテンツを提供できる
  • アプレットの例で分かる通り、設定や操作が容易

BIFSとXMT

Binary Format for Scenes (BIFS) は、ビデオ、静止画像、2Dグラフィックス、3Dグラフィック・オブジェクトから成るような、時間が変化するシーンを記述します。オーディオやビデオと組み合わせたBIFSストリームを作ることによって、ユーザーとのやり取りを含めた、表現力豊かなマルチメディア体験を提供できるようになります。 BIFSを手動コーディングすることは、ほとんど不可能です。BIFS コンテンツを処理するには、Extensible MPEG-4 Textual Format in XML (XMT) を使用します。BIFSのいわばアセンブラーであるXMT-AはXMLとして表現されるので、作ったり維持管理したりするのは簡単です。ただしBIFSとXMT-Aは一対一にマッピングされているので、XMT-Aはやはり非常に低水準のものです。XMT-O(OはOmegaを表します)は簡単に学べる高水準言語であり、2Dグラフィックスやアニメーション、MPEG-4プレゼンテーション内のインタラクティブ要素を作ることができます。XMT-OもXMLとして表現されます。位置決定や同期、アニメーション、ユーザーとのやり取りなど、XMT-Oの持つ高水準の概念は、World Wide Web Consortiumから生まれて一般的になっている標準である、Synchronized Multimedia Integration Language (SMIL) 2.0と似ています。XMT-Oは、下はXMT-Aにまで準拠しているので、BIFSストリームに変換することができます。IBM Toolkit for MPEG-4では、高水準のXMT-Oフォーマットで作られたコンテンツも、低水準のXMT-Aフォーマットで作られたコンテンツも共にサポートしています。

RTSP/RTPを使ったストリーミング・サーバー配信

もし皆さんがストリーミング・メディア・サーバーを使っているのであれば、恐らくそのサーバーは、RTSP/RTPプロトコルを使ってMPEG-4コンテンツを配信するためのISMA準拠のサーバーでしょう(囲み記事 RTSP/RTP ISMAと3GPP を参照)。その場合にはまず、MPEG-4ファイルをヒンティング(hinting)で準備する必要があります。ヒンティングはインデックスやその他、サーバーでコンテンツをストリーミングするために必要となる情報を追加します。元々のMPEG-4ビデオとオーディオのコンテンツも、ISMA標準プロファイルの一つに準拠している必要があります(囲み記事 ISMAと3GPP 参照)。ストリーミング・サーバー上で再生するMPEG-4ファイルをヒンティングするためには、ツールキットにあるAVgenツールを使います。

RTSPプロトコルとRTPプロトコルは、IPネットワークでのメディア・ストリーミングのために特に設計されており、次のような利点があります。

  • メディア・ストリームを早送りしたり巻き戻したりすることができ、また再生はメディア上の任意の点から開始することができます。
  • HTTPベースの配信よりも、帯域を効率的に使うことができます。
  • 例えば、ライブ・イベントの配信などのように、オンザフライで圧縮したコンテンツ・ストリームで使うことができます。

ツールキットのAVgenツールを使うと、HTTPでの配信用に .m4xでのインターリーブ・ファイルを生成したりストリーミング配信用にISMA準拠ファイルをヒンティングしたりすることに加えて、モバイル・ネットワークでのMPEG-4ファイルの3GPP配信もヒンティングできるようになります(囲み記事 ISMAと3GPP 参照)。


ビデオとオーディオを超えたMPEG-4コンテンツ

通常MPEGはビデオやオーディオの圧縮と関連して考えられますが、MPEG-4標準では、さらに多くの要素(ストリーム)を網羅しています。

  • 複数のフォントから成る、プレゼンテーション品質のテキストを含めた2Dグラフィックス
  • 3Dグラフィックス(現在のツールキットでは限定された実装になっています)
  • アニメーション
  • ユーザーとのやり取り要素
  • 埋め込みのJavaコード(現在のツールキットでは実装していません)

XMT-O高水準シーン作成言語を使うと、シーンに場面転換効果を加えたり、2Dグラフィックス、テキスト、アニメーション、ユーザーとのやり取りなどをMPEG-4ショーに追加したりできるようになります(囲み記事 BIFSとXMT 参照)。またXMTプログラム用の開発環境として、IBM Toolkit for MPEG-4にあるXMTBatchツールを使うこともできます。詳細についてはツールキットのドキュメンテーションを参照してください。


まとめ

alphaWorksのMPEG-4 Toolkit SDKにあるJavaコンポーネントによって、任意のプロジェクトに対してMPEG-4ビデオが容易に追加できるようになります。そして、カスタム化可能なスタンドアローンのプレーヤーを作ったり、またはマシンへのインストールが不要な、軽量アプレットを作ったりすることができます。MPEG-4コンテンツは .m4xインターリーブ・フォーマットで保存できるので、普通のWebサーバーがHTTPでMPEG-4を配信できるようになります。あるいはISMA準拠のサーバーを使って、高品質でランダム・アクセスが可能なRTSP/RTPストリーミング配信をすることもできます。ネットワークでビデオを配信することが、ついに普通のJava開発者の手の届くところにまで近づいたのです。



ダウンロード

内容ファイル名サイズダウンロード形式
j-mpeg4-source.zipj-mpeg4-source.zipHTTP

ダウンロード形式について


参考文献

  • この記事の一番上または一番下にある Code アイコンをクリックして(または ダウンロード・セクション を見てください)、必要なソース・コードをダウンロードしてください。

  • IIBM Toolkit for MPEG-4 の評価用ソフトウェア・コンポーネントとツールをダウンロードして、この記事で使用しているコードを試してみてください。

  • Moving Picture Experts Groupの公式Webサイトで 最新のMPEGニュース を見てください。

  • Internet Streaming Media Alliance (ISMA) のサイトで、ISMA準拠のサーバーに関するストリーミング・メディアのプロファイルや情報について調べてみてください。

  • 3rd Generation Partnership Project のWebサイトでは、3GPPメディアで要求される情報の最新版を見ることができます。

  • rtsp.org のWebサイトでは、RTSP/RTPについてさらに詳しく学ぶことができます。また規格準拠のプレーヤーやサーバーの最新リストも見ることもできます。

  • HTTPを使ってMPEG-4コンテンツを配信するために、オープン・ソースのWebサーバーである Apache HTTP Server を使うことができます。

  • Darwin Streaming Server は、RTSP/RTPを使ったMPEG-4コンテンツの配信をサポートする、オープン・ソースのストリーミング・メディア・サーバーです。

  • Java Plug-in をインストールすれば、現在主流となっている最新ブラウザーにアプレット実行機能を追加することができます。

  • IBM Researchの IBM MPEG-4 Technologies Webサイトを見ると、IBMにおける最先端のMPEG-4関連プロジェクトについて知ることができます。

  • developerWorksの記事「 ネイティヴパフォーマンスを使ってのメディアプレイヤーのための外観が変更(skinnable)可能なJave UIsのデザイン 」(2004年3月)ではJava Native Interface (JNI) の使い方として、WinAmp形式のスキンに基づく高度なUIを構築するためのC APIである、SLIKスキン・インターフェースへのアクセスを解説しています。

  • developerWorksの Java Technologyゾーン には、Javaプログラミングのあらゆる面に関する記事が豊富に取り揃えられています。

  • Developer Bookstore には、 Java関連の書籍 をはじめ、広範な話題の技術書が豊富に取り揃えられていますので、ご覧ください。


著者について

Photo of Sing Li

Sing LiはWrox Pressから出版されている多数の本の著者で、Professional Apache Tomcat 、Early Adopter JXTA 、Professional Jini などを執筆しています。技術雑誌に頻繁に寄稿しており、P2P発展に関する熱心なエバンジェリスト(伝道者)でもあります。コンサルタント兼ライターであるSingの連絡先はwestmakaha@yahoo.comです。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology
ArticleID=218855
ArticleTitle=ただ今上映中: オンラインMPEG-4映画を作る
publish-date=11022004
author1-email=westmakaha@yahoo.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。