JMF: JMStudioでRTP試し
JMFのデータ通信には RTP (Real-time Transport Protocol) というのが使える
- JMF RTP Support
- Java Media Frameworkプログラミングガイド(古谷@東邦大)
- JMF 2.0 の機能 – 「マルチメディア・プログラミング」実習 第9回
- Java program JMF-14 RTP & JMF with Monitoring
- Java de RTP – Java Sound APIを使ったリアルタイム通信 –
- Geekなぺーじ : TCP vs RTP:何故RTPが必要なのか?
- RTP – 通信用語の基礎知識
- RTPとは 【Real-time Transport Protocol】 – 意味/解説/説明/定義 : IT用語辞典
のだそうで、付属サンプルの JMStudio でこれが行なえるというので試してみた。
とりあえず、1つのパソコン上で2つの JMStudio を立ち上げてデータ転送を確認してみる。
転送側では、「File->Transmit」にて設定。
キャプチャ設定をしたら…
転送アドレスを指定するのだが、これは「マルチキャストアドレス」を使用したほうがよいようだ。
- マルチキャスト実践講座~IP放送時代の必携テクニック~
- 第 8 章 マルチキャスト
- MulticastなRTPを受信してRTPのヘッダ情報とか表示するサンプル – takuma104のRuby/Rails日記 – Rubyist
- インターネットが崩壊する? – 動画サイトによるトラフィック増大 – m-birdとFreeBSDの同棲日記
- Multicast FAQ File
マシンのローカルアドレスを指定した場合は受信と送信と用途は違っても1台で2つのセッションは作れないようで「Failed to create Session Manager」とのエラーが出てしまう。
- Java Media Framework – JMStudio Error “Can not create session manager”
- Java Media Framework – how to understand the sessionManager(JMF)
なので、ここではマルチキャストアドレスの「224.0.0.0」を指定し、ポート番号を「22224」としてみた(設定ダイアログに例として出ている224.123.111.101:22224でも動作するようだ)。
これでマルチキャストによるデータ転送が始まる。メイン画面とキャプチャ画面の2つが表示される。
引き続き、もう一つのJMStudio側で受信設定をする。メニューは「File->OpenRTP Session」となり、通信設定に送信側と同様「224.0.0.0:22224」を指定する。
うまくいけば、受信した画像が表示される。
受信できない場合は、次のようなダイアログが表示される。
通信状況は、次のようなダイアログなどで確認できる。
マルチキャストアドレスには、ルータ越えを指定できる「224.0.1.0」というのがあるようで、これを試してみようとしたのだが、うまくいかなかった。ルータ越えの際には、TTL値の設定も適切に行なう必要がありそうだ。
- LANを通してパソコン画面を送受信する手順書
- Tef-Roomはパソコン初心者を応援するサイトです。できるかぎり簡単に、最低限必要なことを中心に解説してしていますICMPってなに? Ping・Traceroute(Tracert)・TTL
なお、今回試した 224.0.0.0 のアドレスは予約と示しているサイトもあり、どのアドレスを使うか確認が必要そう。
また、今回試したのは Windows 環境でだったが、Linux 側にも jmf をインストールしようと入手した jmf-2_1_1e-linux-i586.bin を実行すると「+309: Command not found」のようなエラーが出ていた。.bin ファイルの内容を眺めてみると、「tail +309」と行数を指定している箇所が未対応になったためのエラーだったようで、ここを「tail -n 309」と変更した。なお、そのままエラーが出る場合だと、.bin ファイルが壊れて0バイトになってしまうので注意…。(このあたりがメンテナンスされてないほど、jmfが旧いってことなんでしょうけどねぇ)。