/**/

チュートリアル 53:
Jitter によるネットワーク(パート2)

ブロードキャスト

ネットワークを介したマトリックスデータの送信に加え、Jitterでは、jit.broadcast、および、jit.qt.broadcast オブジェクトを使ってRTSP ストリームを作ることができます。jit.qt.broadcast オブジェクトは、Mac OS が動作しているコンピュータでのみ使用できます。これについてはこの章の最後で説明します。jit.broadcast オブジェクトはクロスプラットフォームです。2つのオブジェクトは、だいたい同じように機能しますが、jit.qt.broadcastのユーザは、この章全てに目を通して下さい。

RTSP は Real-Time Streaming Protocol の略で、よく使用されるネットワークストリーミングの標準となっています。これは、QuickTime Player や VLC(フリーでオープンソースのクロスプラットフォーム・プレーヤであるVLCについては、http//www.videolan.org/vls/ でより詳しく学ぶことができます)のような多くのメディアプレーヤによってサポートされています。これらのメディアプレーヤは RTSP クライアントです。Max オブジェクトは RTSP サーバであり、適切なフォーマットを行ない、場合によっては圧縮し、パケット化してRTSP ストリーミングとしてブロードキャスト(放送)します。これらのオブジェクトを使えば、外部のサーバは必要ありません。全ては Jitter の中で行なってくれるのです!

メインストリーム

始める前に、あなたのネットワークが正しく環境設定されているかどうか確認したいのではないでしょうか。アクティブなネットワークインターフェイスと有効な IP アドレスがあることを確認して下さい。Windows 環境では、これは特に重要です。さもないと、ストリーミングの実験はうまく動作しません。

たとえWindows上のネットワークに接続していない場合でも、OS が関与している限り、最低1つのアクティブなネットワークインターフェイスが必要です

これは、インターネットへのログイン/ダイアルアップ接続、または、イーサネットポートへのパワーオンになっているルータの接続を意味し、これらを共有する他のコンピュータを持っていない場合でも(基本的に何かが起きると Windows はネットワークを使用していることを感知します)、あなたのコンピュータに IP アドレスを割り当てます。

・Jitter Tutorials フォルダのチュートリアルパッチ 53jBroadcasting.pat を開いて下さい。

・read dishes.movと書かれたメッセージボックスをクリックし、Start Movie と表示されたトグルボックスをオンにして、ムービーを再生して下さい。jit.pwindow にムービーが再生されるはずです。

実際にブロードキャストを始める前に、考慮しておくことがいくつかあります。

第1に、ブロードキャストのストリームのサイズはどうでしょうか? jit.broadcast オブジェクトのオブジェクトボックスにある2つのアーギュメントは、圧縮され、ストリーミングされるイメージのサイズを決定します。このサイズを変更するには、size アトリビュートを使います。このケースでは 160 x 120 ピクセルでストリーミングします。

第2に、ストリーミングのためのビデオコーデックは何を使うでしょうか? jit.broadcast オブジェクトは3つの異なるコーデック、MPEG-4、H.263、JPEG をサポートしています。入力される Jitter フレームは、ストリーミングの前に、選択されたフォーマットに自動的に圧縮されます。

umenu オブジェクトを使って、3つの中から希望するストリーミングコーデックを選択して下さい。

デフォルトでは、このオブジェクトは MPEG-4 コーデックを使いますが、選択は自由です。 ある種のコーデックは、ある種のクライアントにとって受信がより容易になります。例えば、これを書いている時点では、QuickTime プレーヤは VLC より MPEG-4 の方がはるかに受信しやすくなっています。

第3に、ストリーミングを1台のコンピュータに対して行なう(ユニキャスト)のでしょうか、あるいは、ストリームのURL にアクセスする全てのクライアントがストーリーミングを利用できるようにしなければならない(マルチキャスト)のでしょうか? デフォルトでは、jit.broadcast オブジェクトはマルチキャストストリーミングを使いますが、unicast アトリビュートによってこれを変更することができます。

getvip と書かれたメッセージボックスをクリックし、Max ウィンドウへの出力に注目して下さい。マルチキャストの場合、jit.broadcast オブジェクトは自動的に有効なマルチキャストIPアドレスを生成します。Enable Unicast と表示された toggle をクリックして、再び getvip と書かれたメッセージボックスをクリックし、Max ウィンドウへの出力に注目して下さい。IP アドレスが 127.0.0.1 に変わります。(このアドレスは、ローカルホストと言われ、「自分自身」を意味します。この IP アドレスを使うとコンピュータは自分自身にブロードキャストします。)vip アトリビュートを使うことによって、手動で(1台の)クライアントコンピュータの IP アドレスを設定することができます。(マルチキャストを行っている場合、IP アドレスは自動的に生成されるため、vip アトリビュートの変更はできません。)このチュートリアルのために、ここではマルチキャストに専念しますが、2つの方法が利用できることを覚えておくことは重要です。

ブロードキャストをコントロールするために、いくつかの追加のパラメータをセットすることができます。これには、ポートナンバ、TTL(time-to-live:訳注:IPパケットの生存期間)、コーデックの品質、キーフレーム生成などがあります。デフォルトでは、これらの値はすべて完全に関数のデフォルト値になっていて、このチュートリアルではこれらを変更する必要はありません。

最後に、ストリームの名前をどうすべきでしょうか? jit.broadcast オブジェクトはアクセスするクライアントコンピュータのために、「rtsp://192.168.2.2:8554/jitStriem」という形式の URL を作ります。IP アドレスとポートナンバは生成されますが、リンクを行なう最後の部分は変更可能です。例えば、この RTSP ストリームをsomeDishesという名前にすることも可能です。

streamname someDishes と書かれたメッセージボックスをクリックして下さい。これで、ストリームの名前がカスタマイズされます。

start と書かれたメッセージボックスをクリックして、ストリーミングを開始して下さい。ストリーミングが無事に開始されると、start の後に 1 が、その後に RTSP の URL が続くメッセージ(すなわち「start 1 rtsp://192.168.2.2:8554/someDishes」というメッセージ)が、Max ウィンドウに表示されます。この最後の部分は、ストリームを受信するためにクライアントコンピュータが接続を行わなければならないアドレスです。

ルータのユーザの場合:あなたのコンピュータが、(例えば、NATなどを使って)ローカルIPアドレスを提供するルータの後ろにある場合、RTSP URL はあなたのローカルIPアドレスを参照し、ローカルネットワークの外部にあるコンピュータからアクセスされる「実際の」IPアドレス(WANアドレス)を参照しません。WAN アドレスを調べるためには、web ブラウザで「http://checkip.dyndns.org/」を指定してください(これは、多くの類似したweb サイトの中の一例です)。このアドレスを、RTSP URL のコロンの前の数字の部分に置き換えます。上の例では、WAN アドレスで 192.168.2.2 の部分を置き換えます。

ほとんどのルータは組み込みファイアウォールを持っています。Jitter から適切にストリーミングするために、RTSP ポート(RTSP URL のコロンの後からスラッシュの前までの部分です。ここでは 8554 になっています)がブロックされていないことを、また、このポートへのネットワークトラフィックがあなたのコンピュータを対象としていることを確認して下さい。
このやり方がよくわからない場合は、ルータのマニュアルを調べて下さい。

ネットワーク上に2台目のコンピュータを持っている場合には、そのコンピュータの web ブラウザ、または メディアプレーヤ(QuickTime プレーヤ、あるいは VLC)を使って Max ウィンドウに表示された URL に接続して下さい。あるいは、友人に電話してインターネット越しに試してくれるよう頼んでみて下さい。2台目のコンピュータもなく、頼める友人もいない場合、Jitter が動作している同じマシンで、web ブラウザ、あるいはメディアプレーヤのコピーを動作させることによってストリームを見ることもできます。

動作しない場合は、RTSP URL のIPアドレスをチェックして下さい。アドレスが 0.0.0.0. の場合は、サーバマシンのネットワーク環境設定に問題があります。stopと書かれたメッセージボックスをクリックして、ネットワークに接続されているかを確認し、再び start と書かれたメッセージボックスをクリックして下さい。

・全てがうまく動作していることを確認したら、stop と書かれたメッセージボックスをクリックして下さい。様々なコーデックを使ったブロードキャストを行なって、イメージの品質やパフォーマンスを比較してみるとよいでしょう。

ファイルストリーミング

jit.broadcast オブジェクトを使って、QuickTime で作られるものと同様な、事前に圧縮され、ヒンティング処理されたムービーファイルのストリーミングを行なうことができます。jit.qt.movie オブジェクトは、ヒンティング処理されたムービーファイルをエクスポートすることができます。そこで、これを利用して、ブロードキャストに備えた、dishes.mov ファイルのヒンティング処理とエクスポートを行ないましょう。

ヒンティング処理をされたムービーファイルは、ムービートラックの内容に関する特別な情報を持っています。これは、ストリーミングサーバにコーデックや品質についての「ヒント」を提供するものです。このため、サーバはパッケージ化とデータのブロードキャストについて心配するだけですみます。jit.broadcastで ヒンティング処理されたムービーをストリーミングする場合、オブジェクトは入力されるフレームの圧縮を行なう必要がないため、メディアによっては、適度なパフォーマンスの改善が得られるかも知れません。

まず最初に、jit.broadcast オブジェクトに対し、入力されるマトリックスデータではなく、ムービーファイルをストリーミングすることを命じる必要があります。これは、オブジェクトの mode アトリビュートをセットすることによって行ないます。

・Matrix/File と表示されたトグルボックスをオンにして、jit.broadcast オブジェクトの mode アトリビュートを 1 (ファイル・ブロードキャストモード)にセットして下さい。

jit.qt.movieexport メッセージを使って、ヒンティング処理されたムービーを作ります。ムービーのエクスポートについて記憶を新たにするために、チュートリアル 20:「マトリックス単体のインポートとエクスポート」を参照してみてもよいでしょう。

export fulldialogと書かれたメッセージボックスをクリックして下さい。jit.qt.movie にロードされているムービー(この場合は、dishes.mov)のための「エクスポート」ダイアログボックスが表示されます。


Mac OS X の QuickTime エクスポートダイアログ

・ダイアログボックスのファイルブラウザ部分の下にある、Export と表示されたポップアップメニューから Movie to QuickTime Movie を選択して下さい。このメニューには Movie to Hinted Movie という項目がありますが、この項目では、ここで行なおうとしているムービーの最圧縮は行なってくれません。

・Options... と書かれたボタンをクリックして、ムービー設定(Movie Settings) ダイアログボックスを開いて下さい。


Mac OS X の Movie Settings ダイアログボックス

・Video チェックボックスがチェックされているのを確認し、Settings... と書かれたボタンをクリックして下さい。すぐ下で、Standard Video Compression Settings ダイアログボックスが開きます。Compression Type と表示されたポップアップメニューから MPEG-4 Video を選択し、OK をクリックして Movie Settings ダイアログボックスに戻って下さい。Prepare for Internet Streaming と表示されたチェックボックスがチェックされているのを確認して下さい。さらに、そのすぐ下のポップアップメニューで Hinted Streaming が選択されていることを確認して下さい。終わったら OK をクリックして、エクスポートダイアログボックスに戻って下さい。

・ヒンティング処理されたムービーを保存する場所とファイル名を選び、Save ボタンをクリックして、ムービーをハードディスク上のファイルとして書き出して下さい。

お疲れさまでした。これでムービーをストリーミングするための準備は完了しました。このヒンティング処理されたムービーでは、jit.broadcast への vcodec アトリビュート(または、 spatialqualitytemporalqualitykframe アトリビュートのような関連した情報)は、影響を与えません。これら全ての情報はすでにムービー自体によって提供されています。私たちが行なわなければならないのは、どのムービーをストリーミングするかを jit.broadcast に指示することだけです。

movie と書かれたメッセージボックスをクリックして、標準ファイルダイアログボックスを表示させ、新規に保存したヒンティング処理済みのムービーファイルを探して、それを開いて下さい。Max ウィンドウに、ムービーのファイル名の後に 1 が続くメッセージが表示されるはずです。これは、ムービーの読み込みが成功したことを表しています。

start と書かれたメッセージボックスを押して、ブロードキャストを開始させて下さい。前と同じように、RTSP URL を伴ったメッセージがオブジェクトのダンプアウトレットから出力され、Max ウィンドウに表示されます。メディアプレーヤ、あるいは web ブラウザでムービーがストリーミングされていることを確認して下さい。

・終了したら、stopと 書かれたメッセージボックスをクリックして、ブロードキャストを停止させて下さい。

jit.qt.broadcast オブジェクトの使用(Max OS X のみ)

あらゆる点で、jit.qt.broadcast オブジェクトはその仲間の jit.broadcastと同じように動作します。しかし、この2つのオブジェクトの間には、いくつかの重要な違いがあります。

jit.qt.broadcast は、ストリームを利用できる状態にする場合、「自動的な」セッションアナウンスメントの代わりに、 Session Descriptin Protocol(SDP)ファイルを使います

jit.qt.broadcastjit.broadcast オブジェクトより多くのコーデックを使ってストリーミングできます。

jit.qt.broadcast は、ヒンティング処理済みのムービーから、ビデオだけでなく、オーディオやビデオ(一方または両方)をストリーミングできます。

jit.qt.broadcast は、接続されたカメラからオーディオやビデオ(一方または両方)をストリーミングできます。

興味を持たれた方は、jit.qt.broadcast オブジェクトのオンラインリファレンス、またはヘルプパッチで、カメラからのストリーミングについて学ぶことができます。このチュートリアルでは、単に、SDP ファイルが作られるプロセスに目を通し、入力されるマトリックスに基づいた、ビデオのみによるブロードキャストをスタートさせます。

Session Descripton Protocol(セッション・デスクリプション・プロトコル)ファイルは、単に、いくつかの基本的なデータをRTSP クライアントに提供するものです。このデータには、トラックがいくつストリーミングされるか、エンコードされた方法に関する情報、そして、ネットワークやインターネットのどこでクライアントが実際のストリーミングデータを探さなければならないか(SDP ファイルはデータソースと同じ場所に置く必要はありません)が含まれます。jit.qt.broadcast オブジェクトは、オブジェクトにセットされているブロードキャストのコーデック、サイズ等に基づいて、自動的にこれらのファイルを生成します。このファイルを作ることによって、RTSP クライアントは、これを友人へe-mail で送ったり、web サイトにリンクを掲示したりするなどの利用ができるため、あなたのストリームを公開することができます。

・チュートリアルパッチ 53jBroadcasting.pat がまだ開いていたら、それを閉じて下さい。そして、Jitter Tutorials フォルダから チュートリアルパッチ 53jQTBroadcasting.pat を開いて下さい。見てわかる通り、このパッチは前のパッチと非常によく似ていて、ブロードキャストオブジェクトへの2つのアーギュメントによって、ブロードキャストストリームのディメンションが決められています。

read dishes.mov と書かれたメッセージボックスをクリックし、Start Movie と表示された toggle をオンにして、ムービーの再生を開始して下さい。jit.pwindow オブジェクトにムービーが再生されるはずです。

・お望みであれば、Codec と表示された ubumenu から選択を行なって下さい。デフォルトのビデオコーデックは、H.263 で、すでにこれが選択されています。QuickTime で利用できる標準のビデオコーデックの全てにアクセスしている点に注意して下さい。

いくつかのコーデックは他のものよりストリーミングにより適しています。H.261、H.263、MPEG-4、Photo-JPEG はかなり一般的です。他のコーデックも使うことができますが、ネットワークを介したストリーミングでは、許容できるような画質やパフォーマンスが提供できない可能性があります。

write と書かれたメッセージボックスをクリックして下さい。標準ファイルダイアログボックスが開くので、ブロードキャストストリームを記述したSDPファイルの名前と場所を選んで下さい。OK をクリックしてファイルを保存して下さい。

これで、現在のセットアップを反映した、ブロードキャストのためのSDF ファイルが設定されました。もし、何らかの変更(マルチキャストからユニキャストへの変更や、新しいコーデックへの変更)があった場合には、新しい SDP ファイルを書き出さなければなりません。

start と書かれたメッセージボックスをクリックし、ストリーミングを開始して下さい。

・ネットワーク上に2台目のコンピュータを持っている場合には、そのコンピュータの web ブラウザ、または メディアプレーヤ(QuickTime プレーヤ、あるいは VLC)で、SDPファイルを開いて下さい。(このファイルを他のマシンに送信する必要があります。)あるいは、友人に SDP ファイルをe-mail で送信して、インターネット越しに試してみるよう頼んでみて下さい。2台目のコンピュータもなく、頼める友人もいない場合、ローカルのweb ブラウザ、あるいはメディアプレーヤでファイルを開いて、自分自身で試してみることもできます。

stopと書かれたメッセージボックスをクリックして、ブロードキャストを終了して下さい。

まとめ

この章では、jit.broadcast および jit.qt.broadcast オブジェクトを使って、RTSP(Real-Time Streaming Protocol:リアルタイム・ストリーミング・プロトコル)のストリームを直接 Jitter から送信する方法について学びました。そこでは、様々なコーデックや様々なセッション・アナウンスメントの方法を使いました。さらに、jit.qt.movie オブエジェクトからヒンティング処理をされたムービーをエクスポートする方法についても学びました。