2013年4月10日水曜日
Webカメラ画像のリアルタイム表示
Webカメラの映像をAndroidスマホで表示するデモを何度か受けたことがある。
その際いつも指摘されることが、スマホ側での画像の遅延。
動作環境は以下のようなイメージ。
USBカメラの画像は数秒遅れでAndroid端末に表示される。
ストリーミングソフト=WebCamXPでは3~5秒、YawCamで2秒程度。
USBカメラとAndroid端末が離れている場合は問題ないんですが、デモなどでは絶対指摘されてしまいます。
「この遅れはなんとかならないのか ・・ 」と。
確かにそうなんですよね。
車のバックモニタなどを想定した場合、2~3秒遅延があれば「ゴツン!」間違いなしです。
ストリーミングソフトの自作を想定して、どこまでリアルタイムに近づけるか調べてみた。
USBカメラをDirectShowなどで取り込む場合、取り込みに必要な時間は33mS。
1/30秒での画像取り込みですね。
取り込んだ画像サイズは9216154バイト(640*480*3+α:ヘッダ分)でした。
この画像(Bitmap)をメモリ上でjpegに変換した場合(品質40%)
処理時間に約31mS
出力画像サイズは25871バイト(原本の約1/35)でした。
※ ファイル出力していません。あくまでもメモリ上だけの展開です。
あとはWifiでの転送速度とAndroidの受信~表示の遅れ。
これはJNI(C++)などを使ってがんばるしかないです。
実際には1秒に10枚程度の画像でパラパラ漫画的に、遅延は100mS程度って感じでしょうか。
(これでも2メガBPSの通信速度が必要で、3G回線だととっても無理)。
これで実用レベルに達するなら、DirectShowでの画像取り込み~Jpeg変換~Androidへの転送ってのが実現できそうです。
MotionJPEGでのパラパラ漫画ストリーミングです。
最近はやりのストリーミングもリアルタイムには厳しいので ・・
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿