Webカメラの接続エラー

2009.11.19 木曜日

Flashの起動時などに複数台のWebカメラに同時に接続させようとすると、プログラム上は接続できているけど、画面上の描画が更新されない状態に陥ることがあります。以前の記事でも書いたとおり、手動でWebカメラに再接続させれば問題ないですが、自動化させたい場合の解決策。

以下サンプルコード。
まず、Webカメラに接続する瞬間にタイマーを設定し、指定した時間が経った時にカメラのフレームレートを確認するイベントを発生。フレームレートが0の場合は、再接続の関数を呼び出し。フレームレートの確認は少し間(例えば2,000ms)をおいてをしないと、接続できているWebカメラまで再接続しようとするので注意が必要です。

package {
	import flash.display.MovieClip;
	import flash.events.TimerEvent;
	import flash.media.Camera;
	import flash.media.Video;
	import flash.utils.Timer;

	public class Main extends MovieClip {

		private var Video_vid:Video;
		private var camera:Camera;
		private var timer:Timer;

		public function Main():void {

			//ビデオをステージに表示
			Video_vid = new Video(320, 240);
			this.addChild(Video_vid);

			//カメラに接続
			Connect(0);
		}

		//カメラに接続
		private function Connect(_id:uint):void {

			//カメラの取得
			camera = new Camera();
			camera = Camera.getCamera(String(_id));

			//カメラがある場合
			if (camera != null) {

				//カメラの設定
				camera.setMode(320, 240, 30);
				Video_vid.attachCamera(camera);

				//タイマー設定、開始、イベント登録
				timer = new Timer(2000, 1);
				timer.start();
				timer.addEventListener(TimerEvent.TIMER, Check);
			}
		}

		//カメラの確認
		private function Check(e:TimerEvent):void {

			//フレームレートが0の場合、再接続
			if (camera.currentFPS == 0) Connect(0);
		}
	}
}

Posted by tmdf|

trackback

http://tmdf.net/blog/20091119_webcam_error.html/trackback

comments(0)

POST NEW COMMENT

  • name:*
  • e-mail:*

    The content of this field is kept private and will not be shown publicly.
  • website:
  • comment:*

    Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code>
    Lines and paragraphs break automatically.

Photo

PROFILE

森田 考陽 [Takaaki Morita]
Twitter: @tmdf
Other: mtdf.net

Designer / Programmer

RECENT POSTS

MONTHLY ARCHIVES