ホーム >> 左脳Script >> Adobe AIR >> Flex >> AIR から WebCamera を使うには

AIR から WebCamera を使うには


WebCameraを買って来た。とりあえず、AIRで試してみよう!


カメラからの映像を写すだけ

こんなコードだけで、Webカメラの動作確認くらいは出来てしまいます。
というか実際これで動作確認しました。そもそも動画チャット云々より、 「AIRでなんか出来そうだ」と言う目的で買ってきたので、正しく突き進んでいます。

Main.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    applicationComplete="init();" resize="resize();">
    <mx:Script>
        <![CDATA[
        import flash.media.Camera;
        import flash.media.Video;
        private var vid:Video = null;
        private function init():void
        {
            var cam:Camera = Camera.getCamera();
            if (    cam )
            {
                vid = new Video();
                vid.attachCamera(cam);
                campanel.addChild(vid);
                resize();
            }
        }
        private function resize():void
        {
            if (    vid )
            {
                vid.width = campanel.width;
                vid.height = campanel.height;
            }
        }
        ]]>
    </mx:Script>
    <mx:UIComponent id="campanel" width="100%" height="100%"/>
</mx:WindowedApplication>


test0.PNG
何か荒い・・・静止画では判りませんが、コマ数も遅い気がします。


カメラのモードを設定する

カメラが対応していれば、「setMode()」で設定が可能です。
→詳細:http://livedocs.adobe.com/flex/3_jp/langref/flash/media/Camera.html#setMode()

記述は、「public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void」となっており、 まぁ見れば判るでしょう(ぉ

判りにくいのは最後のフラグで、これは「指定したモードがカメラにない場合に、近似設定をさがす方法」を指定するものです。
・・・イマイチな説明ですね(ぉぃ

  • 真に設定すると、解像度を優先的にカメラの近似モードを探します。
    これは、例えば「640x480(30fps)」の設定をした時の動作を考えて見ましょう。
    もし、カメラの仕様が「320x240(30fps)640x480(15fps)」だった場合、解像度が近い「640x480(15fps)」が設定される事になります。
  • 偽に設定すると、フレームレートを優先的ににカメラの近似モードを探します。
    例えば「640x480(30fps)」の設定をするとします。
    もし、カメラの仕様が「320x240(30fps)640x480(15fps)」だった場合、フレームレートが近い「320x240(30fps)」が設定される事になります。


コードを以下のように変更しました。
private function init():void
{
	var	cam:Camera = Camera.getCamera();
	if (	cam	)
	{
		cam.setMode(640, 480, 30);
		vid = new Video();
		vid.attachCamera(cam);
		campanel.addChild(vid);
		resize();
	}
}

test1.PNG
それなりの画質に。静止画では判りませんが、コマ数も増え動画としてスムーズになりました。

そもそも「var cam:Camera = Camera.getCamera();」でカメラを取得した時、デフォルトとなる設定は、必ずしもカメラが(スペックとして)推奨している値にはならないという事です。アプリケーションから明示的に画質を指定してやる必要が在るようです。


雑感

これでリアルタイム画像認識の実験が出来るかなぁ・・・と風呂敷を広げて見る。

調子に乗って、マイクによる外部入力もやってみようかと調査したところ・・・
AIR 1.5(FlashPlayer10.0?)では、生データを直接扱えないと判明しました。 AIR 2.0(FlashPlayer10.1)以降での新機能と公に宣伝していますので、コレ以前のバージョンでは無理と言うことですね。
→参考:http://www.adobe.com/jp/joc/air2/beta/


2.0β・・・そろそろ調査を開始する必要が在るようで・・・



トラックバック(0)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/247

コメントする

ホーム >> 左脳Script >> Adobe AIR >> Flex >> AIR から WebCamera を使うには

アーカイブ

このブログ記事について

このページは、n-yagiが2010年1月 7日 18:51に書いたブログ記事です。

ひとつ前のブログ記事は「クラス定義の管理方法」です。

次のブログ記事は「XML は String で結合する方が早い」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。