スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« テレビ電話も動作を開始 | トップページ | 今週は仕上げ作業 »

面白そうではあるけれど

今は、Mirror-DTCのシェアウェア化を行うフェーズで、現行のクライアント/サーバー相当部分の新機能については、大体は実装が終わった。なので、今週は今回の開発の肝になる開発を行ってきたのだが、今日は、動作し始めたテレビ電話ソフトの完成度を上げていた。

今回開発しているテレビ電話ソフトというのは、Webカメラやマイクからのデータの取り込みに関しては、AG-Webカメラレコーダー、ネットワーク通信に関しては、Mirror-DTCから処理コードを持ってきている。

また、ネットワーク通信用には、ビデオ/音声データの圧縮も行っているのだが、その圧縮方式は、AGM-DCT+/AG-ADPCMなので、これらについても、AGMPlayerなんかから、その処理コードを持ってきている。

と、いう事なので、今週の半ばくらいから開発を始めたにも関わらず、昨日の時点で、既に、テレビ電話ソフトは、普通に動作する様になっていた訳なのだが、テレビ電話ソフトには、既存のソフトとは異なる所もある訳だ。

具体的には、マイクからの音声入力については、AG-Webカメラレコーダーからの移植なので、DirectShowベースになっているのだが、AG-Webカメラレコーダーから移植した処理ルーチンをそのまま使ってみると、音声転送に0.5秒くらいの遅延が発生した。

AG-Webカメラレコーダーでは、入力した音声は動画ファイルに書き込む格好になるので、ビデオ側の書き込みタイミングと比較して数十秒も遅延があると問題になる事もあるのだが、0.5秒程度だと、普通は問題にならない。

何故なら、ファイルに書き込むタイミングが0.5秒遅れたとしても、そのデータが録画を開始してから0.5秒後のモノとして扱われる事はないので、再生時には、録画開始タイミングの映像と同時に再生される格好で動画ファイルに書き込まれる事になるからだ。

これに対して、テレビ電話ソフトの場合、入力された音声はダイレクトに通話相手に伝送され、そのまま再生される格好になるので、送信側でマイク入力が0.5秒遅れると、再生される音声も、0.5秒遅延する格好になるので、問題になる訳だ。

で、この問題は、DirectShowからデータを取り込む場合、デフォルト設定では、そのバッファリング時間が0.5秒になっていて、AG-Webカメラレコーダーでは、それでも問題はなかったので、そのままにしてあったからなので、テレビ電話ソフトでは、この設定を、今の所、20mSecに変更してある。

その結果として、音声の遅延は大幅に減ったのだが、何処まで減らせるのか、というのは、普通なら、中々、チャレンジングな課題になる。

何故なら、FFTベースの圧縮方式を採用する場合、音質を鑑みると、少なくともデータ数として4096個くらいは揃えないと圧縮は出来ないので、例えば、サンプリング周波数が44100Hzの場合には、0.1秒程度の遅延は必須になる訳だ。

と、いう事なので、少なくとも昔の携帯電話では、音声圧縮方式としては、実質的に遅延が発生しないADPCM方式が良く使われた訳なのだが、AG-ADPCMというのも、当然、基本的には、普通のADPCM方式と特性は変わらないので、データ圧縮の為に必要になる遅延時間は無い。

しかし、ネットワーク通信では、1バイトだけを転送しようとしても、通常は、100バイト以上のデータ量に相当するパケットが転送されてしまうので、そんな単位で転送を行っていると効率が悪すぎる訳だ。

なので、データを送信する場合には、ある程度のデータ量を貯めてから、送信した方が転送効率は良くなるのだが、あまりためすぎると、転送効率は上がっても、遅延が増えてしまう訳だ。

と、いう事なので、テレビ電話ソフトでは、快適に会話を行える様にする為には、あまり大きな音声遅延は許されない訳なので、音声のバッファりリングだとか圧縮方式だとか転送ブロックサイズなんかにも気を使う必要がある訳だ。

更に、映像転送については、通常は、音声以上にデータサイズは大きくなるので、圧縮率は上げる必要があるのだが、こちらについても、大幅な遅延は許されないので、動画ファイルの圧縮時に行われる様な、前後の数十フレームから、差分圧縮用に使えそうなデータを探す、なんて事は出来ない訳だ。

と、いう事なので、映像の圧縮方式についても、テレビ電話ソフトでは、動画ファイル作成用の圧縮方式とは異なるモノを使う必要が出て来る訳だ。

なので、真面目にテレビ電話用に最適化されたソフトを開発しようとすると、色々と面白そうなチャレンジ項目もある訳なのだが、今回は、とりあえず、リリースを急ぐ必要があるので、光回線かWiMax回線なんかが使われる場合に、普通に会話を成立させる事が出来る程度の遅延ならOkという事にする。

で、今日の時点で、一応、その程度の事なら可能にはなっているのだが、使用されるWebカメラの解像度が高すぎたりした場合にどうするか、みたいな機能はまだ入れていないので、そういった機能の作り込みについては、もう数日行う事になる筈だ。

« テレビ電話も動作を開始 | トップページ | 今週は仕上げ作業 »

トラックバック


この記事へのトラックバック一覧です: 面白そうではあるけれど:

« テレビ電話も動作を開始 | トップページ | 今週は仕上げ作業 »

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google