Web カメラの映像を映す

(サンプル一覧を表示する)

Web カメラの映像を映すテストをしてみました。

サーバに映像を送信するところまでは作っていないので、
このサンプルだけではあまり役に立ちません。
Web カメラの初期化用に使ってください。
Flash の実行画面
Web カメラの映像を映す

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

Web カメラの映像を映す

ソースコード

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.StatusEvent;
	import flash.events.TimerEvent;
	import flash.media.Camera;
	import flash.media.Video;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.Timer;
	import flash.system.Security;
	import flash.system.SecurityPanel;

	/**
	 * Web カメラの映像を映すサンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * Web カメラ用オブジェクト
		 */
		private var camera:Camera;
		
		/**
		 * カメラの画面を映す用
		 */
		private var video:Video;
		
		/**
		 * テキストフィールド
		 */
		private var textField:TextField;
		
		/**
		 * カメラの状態を定期的にチェックするタイマー
		 */
		private var timer:Timer;
		
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化メソッド
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			// テキストフィールドの準備
			textField = new TextField();
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.y = 152;
			addChild(textField);
			
			// カメラの準備
			camera = Camera.getCamera();
			camera.addEventListener(StatusEvent.STATUS, onCameraStatusChange);
			
			// カメラの画面を映すビデオオブジェクトの準備
			video = new Video(200, 150);
			
			// タイマーの準備
			timer = new Timer(1000, 0);
			
			// カメラのアクセス許可・拒否 設定画面を開く
			Security.showSettings(SecurityPanel.PRIVACY);
			
			// カメラが見つからない時
			if (camera == null) {
				textField.text = "カメラが見つかりません。";
				return;
			}
			
			// カメラがアクセス拒否になっている時
			if (camera.muted == true) {
				return;
			}
			
			// カメラの画面を映す
			startCamera();
		}
		
		/**
		 * カメラの画面を映す
		 */
		private function startCamera():void 
		{
			// カメラをビデオオブジェクトに紐付ける
			video.attachCamera(camera);
			addChild(video);
			
			// タイマー開始
			timer.addEventListener(TimerEvent.TIMER, onTimer);
			timer.start();
		}
		
		/**
		 * カメラの画面を停止する
		 */
		private function stopCamera():void 
		{
			// ビデオオブジェクトを非表示にする
			removeChild(video);
			
			// タイマー停止
			timer.stop();
			timer.removeEventListener(TimerEvent.TIMER, onTimer);
		}
		
		/**
		 * カメラの状態が変化した時に呼ばれるイベント
		 * @param	e
		 */
		private function onCameraStatusChange(e:StatusEvent):void 
		{
			// カメラがアクセス許可に設定しなおされた時
			if (e.code == "Camera.Unmuted") {
				startCamera();
				return;
			}
			
			// カメラがアクセス拒否に設定しなおされた時
			if (e.code == "Camera.Muted") {
				textField.text = "";
				stopCamera();
				return;
			}
		}
		
		/**
		 * タイマーイベント
		 * @param	e
		 */
		private function onTimer(e:TimerEvent):void 
		{
			// カメラの状態をテキストフィールドに入れる
			textField.text = "";
			textField.appendText("bandwidth: " + camera.bandwidth + "\n");
			textField.appendText("currentFPS: " + camera.currentFPS + "\n");
			textField.appendText("FPS: " + camera.fps + "\n");
			textField.appendText("keyFrameInterval: " + camera.keyFrameInterval + "\n");
		}
		
	}
	
}
		

外部リンク