170 likes | 353 Views
EMON システム: コマンドパイプラインによる マルチメディアストリーム処理. 笠松健一 京都大学工学部 藤川賢治 京都大学情報学研究科 岡部寿男 京都大学情報学研究科 古村隆明 京都高度技術研究所. 平成14年3月14日. 再利用性の高い部品を組み合わせることにより処理を行うシステムを提案. 研究の背景と目的. インターネットでマルチメディア伝送を個人でもできる 電話やビデオ放送のソフトウェアが急速に普及 デジタル家電や AV 機器を対象とするネットワーク技術の研究 独自方式→ IP へ統合の方向 例えば IP スピーカ、 IP マイクの登場
E N D
EMONシステム:コマンドパイプラインによるマルチメディアストリーム処理EMONシステム:コマンドパイプラインによるマルチメディアストリーム処理 笠松健一 京都大学工学部 藤川賢治 京都大学情報学研究科 岡部寿男 京都大学情報学研究科 古村隆明 京都高度技術研究所 平成14年3月14日
再利用性の高い部品を組み合わせることにより処理を行うシステムを提案再利用性の高い部品を組み合わせることにより処理を行うシステムを提案 研究の背景と目的 • インターネットでマルチメディア伝送を個人でもできる • 電話やビデオ放送のソフトウェアが急速に普及 • デジタル家電やAV機器を対象とするネットワーク技術の研究 • 独自方式→IPへ統合の方向 • 例えばIPスピーカ、IPマイクの登場 • このようなネットワーク環境の変化に既存のソフトウェアでは各ソフトウェア毎に逐一対応する必要
関連研究 (マイクロソフト社製のインターネットを利用するアプリケーション) • 電話アプリケーションNetMeeting • 音声録音機能 • 音声再生機能 • 音声ストリームのネットワーク伝送機能 • 放送アプリケーションMediaEncoder • 音声録音機能 • 音声ストリームのネットワーク伝送機能
関連研究 (マイクロソフト社製のインターネットを利用するアプリケーション) • NetMeetingで伝送する音声をMediaEncoderで放送することはできない • 機能は十分に有る • 実現にはプログラミング言語の知識が必要 HostA HostB NetMeeting NetMeeting MediaEncoder 電話機能 電話機能 放送機能
提案するシステム • コマンドパイプラインにより処理 • UNIXにはパイプでプログラムを連携し、 様々な処理を行う考え方が存在 →マルチメディアストリーム処理に適用 • 機能毎にプログラムを実装し、パイプで連携 • パイプラインの例 $audiocapt | udpsend 10.0.0.1 マイクで音声を取り込む データを10.0.0.1へ送信 →マイクで取り込んだ音声を10.0.0.1へ送信
提案するシステムの設計と実装実装したプログラムと接続関係提案するシステムの設計と実装実装したプログラムと接続関係 rtpenc RTPヘッダを 付加 udpsend UDP/IPで送信 audiocapt 音声を録音 fecenc 前方誤り訂正 の符号を付加 jpegcapt 映像の取込み ntspcall 電話の発信 パイプによる接続 IPネットワーク ソケットによる接続 ntspwait 電話の着信 jpegplay 映像を表示 fecdec 前方誤り訂正 を行う rtpdec RTPヘッダを 削除 udprecv UDP/IPで受信 audioplay 音声を再生
jpegcapt 映像の取込み fecenc 前方誤り訂正 の符号を付加 rtpenc RTPヘッダを付加 IP ネットワーク • HostB$ udprecv | rtpdec | fecdec | jpegplay jpegplay 映像を表示 fecdec 前方誤り訂正 を行う rtpdec RTPヘッダを 削除 udprecv UDP/IPで受信 実現したアプリケーションの例ビデオオンデマンド HostA • HostA$ jpegcapt | fecenc | rtpenc >video.jpgs udpsend UDP/IPで送信 video.jpgs • HostA$ udpsend 10.0.0.2< video.jpgs HostB:10.0.0.2
IP ネットワーク • HostB$ udprecv | rtpdec | fecdec | jpegplay jpegplay 映像を表示 fecdec 前方誤り訂正 を行う rtpdec RTPヘッダを 削除 udprecv UDP/IPで受信 実現したアプリケーションの例実時間放送 HostA • HostA$ jpegcapt | fecenc | rtpenc | udpsend 10.0.0.2 jpegcapt 映像の取込み fecenc 前方誤り訂正 の符号を付加 rtpenc RTPヘッダを付加 udpsend UDP/IPで送信 HostB:10.0.0.2
n Reed Solomon 符号 FECで付加されるパケット (FECパケット) n-k リードソロモン符号による前方誤り訂正 Header 元データのパケット (メディアパケット) k • n 個中の任意の n-k個以下のパケットロス時にデータの訂正が可能
実現したアプリケーションの例前方誤り訂正を行うリレー実現したアプリケーションの例前方誤り訂正を行うリレー 受信ホスト • fecencがFECパケットの生成 • fecdecがメディアパケットの回復 • 送信ホストから受信ホストまで伝送する途中で 前方誤り訂正を行うリレー relay$ udprecv | rtpdec | fecdec | fecenc | rtpenc | udpsend リレーホスト 送信ホスト リレーホスト 受信ホスト リレーホスト 受信ホスト
IPネットワーク 実現したアプリケーションの例電話 HostA HostA$ ntspcall 10.0.0.2 “rtpdec | audioplay”“audiocapt | rtpenc” HostB$ ntspwait 10.0.0.2 “rtpdec | audioplay”“audiocapt | rtpenc” audioplay 音声を再生 rtpdec RTPヘッダを削除 audiocapt 音声を録音 rtpenc RTPヘッダを付加 ntspcall 電話の発信 audioplay 音声を再生 rtpdec RTPヘッダを削除 ntspwait 電話の着信 audiocapt 音声を録音 rtpenc RTPヘッダを付加 HostB:10.0.0.2
既存のプログラムと連携SSH • ホストBでマイクから取り込んだ音声ストリームをホストAへ暗号化して伝送し、ホストAで再生する HostA$ssh 10.0.0.2 audiocapt | audioplay
既存のプログラムと連携tee • teeを用いると、プログラムの出力をプログラムや ファイルへ複数同時に出力することができる • HostAでカメラから映像を取込み、ファイルに保存しながら放送 HostA$ jpegcapt | tee save.jpgs | rtpenc | udpsend 225.0.0.1
同期再生 • 映像とそれに同期する音声について考える • 映像を取り込むホストと音声を取り込むホストが異なる場合や、再生を行うホストが異なる場合に 同期再生を行う機能の実現 • ホスト間で時計の情報と再生バッファーの状況の共有 • NTPを用いてホストの時計を同期することにより 映像と音声を異なるホストで再生する機能を実装
IPネットワーク 複数ホストによる同期再生機能の実装 音声送信ホスト 音声受信ホスト NTPサーバ • NTPで同期しているホストの時計を元にタイムスタンプを付加 • 再生時刻はタイムスタンプの時刻+あらかじめ定めた時間 audiocapt 音声を録音 audioplay 音声を再生 映像送信ホスト 映像受信ホスト jpegcapt 映像の取込み jpegplay 映像の再生
まとめと今後の課題 • まとめ • 機能毎に実装したプログラムをパイプで連携し、さまざまな処理を行うシステムを提案 • 提案するシステムの設計と実装 • IPネットワークを利用した様々な処理を実現 • 今後の課題 • 音声ミキサーなどの機能を追加 • 実装したシステムの情報 • http://www.ibcast.net/
IPネットワーク 実現したアプリケーションの例IPマイクによる電話 HostA$ ntspcall 10.0.0.2 “rtpdec | audioplay”“udprecv 10.0.0.1” HostM$ audiocapt | rtpenc | udpsend 10.0.0.1 HostA:10.0.0.1 audioplay 音声を再生 rtpdec RTPヘッダを削除 udprecv RTPヘッダを付加 ntspcall 電話の発信 audiocapt 音声を録音 rtpenc RTPヘッダを付加 udpsend UDP/IPで送信 HostM