HAKUHIN's home page
更新履歴
 
 



カメラの映像を表示したい
 

サンプルをダウンロード
 


■カメラを使用するには?
 
Flash Player の設定画面からカメラの使用を許可します。
 
 
Flash Player の設定画面からカメラデバイスを選択することができます。
 
 
■カメラの映像を表示したい

チャットカメラを使って Flash 上にカメラの映像を表示できます。
 
1.Video オブジェクトを作成する

ライブラリにある右上のボタンをクリックしてメニューを呼び出します。
 
 
メニューから『 新規ビデオ 』を選択します。
 
 
ライブラリに作成された埋め込みビデオを、ドラッグアンドドロップでFlash上に配置します。そしてプロパティでインスタンス名をつけます。

ここでは my_video と名前を付けます。
 
 
2.Camera オブジェクトを取得する

Camera.get() メソッドを使用して Camera オブジェクトを取得します。
 
カメラデバイスが複数存在する場合、引数に番号を指定すると、その番号に割り振られているカメラデバイスを利用する事ができます。
 
引数を省略するとFlash Player の設定画面で設定したカメラデバイスが利用できます。
 
利用可能なカメラデバイスが存在しない場合、null が得られます。
 
カメラオブジェクトを取得

// カメラオブジェクトを取得
var camera_obj = Camera.get();
 
0 番目のカメラオブジェクトを取得

// カメラオブジェクトを取得
var camera_obj = Camera.get(0);
 
現在使用しているカメラのデバイス名を取得するには、name プロパティを使用します。
 
現在使用しているカメラデバイス名を取得する

// カメラデバイス名を取得
var camera_obj = Camera.get();
trace("NAME:" + camera_obj.name);
 
複数あるカメラのデバイス名をすべて取得するには、Camera.names プロパティを使用します。 配列に格納されたデバイス名称が得られます。
 
「配列の順番」と 「Camera.get() メソッドの引数に渡す番号」は同じです。
 
カメラデバイス名をすべて取得する

// カメラデバイス名を取得
var name = Camera.names;
var i;
for(i=0;i < name.length;i++){
	trace("id:" + i + " NAME:" + name[i]);
}
 
3.Video オブジェクトに関連付ける

はじめに配置したビデオオブジェクトから attachVideo() メソッドを呼び出して、ビデオオブジェクトとカメラオブジェクトを関連付けます。
 
引数に Camera オブジェクトを渡します。
 
Video オブジェクトに関連付ける

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

// ビデオとカメラを関連付け
my_video.attachVideo(camera_obj);
 
■Flash Player のカメラの設定
 
ActionScript からカメラへのアクセスを試みると、以下の確認画面が表示されます。
 
ユーザーにより、拒否ボタンを押された場合カメラを利用することはできません。
 
 
ユーザーによるアクセス許可の結果を取得するには、onStatus イベントを使用します。
 
引数から得られるオブジェクトの、code プロパティから結果を取得できます。
 
カメラのアクセス許可設定の結果を取得する

// カメラオブジェクトを取得
var camera_obj = Camera.get();

// ビデオオブジェクトに関連付ける
my_video.attachVideo(camera_obj);

// アクセス許可を調べる
camera_obj.onStatus = function(info) {

	switch(info.code){
	case "Camera.Unmuted":
		trace("カメラ利用可能");
		break;

	case "Camera.Muted":
		trace("カメラ利用不可能");
		break;

	};
}
 


 

キャプチャモードを設定したい
 


■キャプチャモードの設定をしたい

キャプチャモードの設定を行うと、カメラデバイスから入力される映像ソースの解像度とフレームレートを変更する事ができます。
 
解像度が大きいほど負荷が高くなりフレームレートが落ちる可能性があります。
 
■解像度とフレームレートを設定する
 
映像ソースの解像度とフレームレートを設定するには、setMode() メソッドを使用します。
 
Cameraオブジェクト.setMode ( [幅] , [高さ] , [フレームレート] , [解像度を優先するか] );
第01引数(略可)カメラの入力解像度の幅
第02引数(略可)カメラの入力解像度の高さ
第03引数(略可)カメラの入力フレームレート
第04引数(略可)引数 1 から 3 までの設定にデバイスが対応していない場合、
解像度を優先して処理するなら true,フレームレートを優先して処理するなら false
戻り値 なし
 
実際に設定されたキャプチャ設定を取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

var w = 400;
var h = 300;
var fps = 30;

// キャプチャ設定する
camera_obj.setMode(w,h,fps);
 
設定したパラメータをサポートしていない場合、デバイスが対応しうる中で最も近い環境に設定されます。
 
実際の Flash に表示している映像の幅と高さを変更したい場合は、Videoオブジェクトの方を操作します。
 
■実際に設定された解像度とフレームレートを取得する
 
実際に設定された解像度を調べるには widthheight プロパティを使用します。フレームレートを調べるには、fps プロパティを使用します。
 
実際に設定されたキャプチャモードの設定を取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
var w = 400;
var h = 300;
var fps = 30;

camera_obj.setMode(w,h,fps);

trace("幅" + camera_obj.width);
trace("高さ" + camera_obj.height);
trace("フレームレート" + camera_obj.fps);
 
■実測のフレームレートを取得する
 
実測のフレームレートを調べるには、currentFps プロパティを使用します。
 
実測のフレームレートを取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

// ビデオオブジェクトに関連付ける
my_video.attachVideo(camera_obj);

var w = 400;
var h = 300;
var fps = 30;

// キャプチャ設定する
camera_obj.setMode(w,h,fps);

onEnterFrame = function(){
	trace("実際のフレームレート" + camera_obj.currentFps);
}
 


 

モーションを検出したい
 


■モーション検出とは?
 
カメラ映像の変化の度合いから判断して、カメラの映像が動画、静止画状態であるかを検出します。
 
カメラチャット利用時は、静止画状態であっても映像データは常に送信され続けるようです。
 
■モーションを検出したい

カメラデバイスの映像に大きく変化があるか無いかを検出する事ができます。

モーション検出の設定を行うには、setMotionLevel() メソッドを使用します。
 
Cameraオブジェクト.setMotionLevel ( 検出精度 , [タイムアウト] );
第01引数 0 ~ 100 までの数値
(数値が小さいほど少しの変化でも検出、100 でまったく検出しない)
第02引数(略可)モーションの検出を終了してから、onActivity イベントが呼び出されるまでの時間(単位:ミリ秒)デフォルトで 2000
戻り値 なし
 
モーション検出設定を取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

// モーション検出の設定(検出精度、タイムアウト)
camera_obj.setMotionLevel(50,1000);
 
モーションの検出を取得するには、onActivity イベントを使用します。
 
引数から得られる値が、true であればモーション検出状態、false であればモーション無し状態である事がわかります。
 
モーション検出設定を取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

// モーション検出の設定(検出精度、タイムアウト)
camera_obj.setMotionLevel(50,1000);

// モーション検出に関するイベント
camera_obj.onActivity = function(activity)  {
	if(activity){
		trace("検出");
	}else{
		trace("なし");
	}
}
 
■カメラが検出した映像の変化量を取得する
 
カメラが検出した映像の変化量(アクティビティレベル)を取得するには、activityLevel プロパティを使用します。
 
0 から 100 までの範囲となります。100 であるほど大きく変化したことがわかります。
 
カメラデバイスの準備ができていない場合、-1 が得られます。
 
なお、正常に値を取得する為には onActivity イベントに一度アクセスしておく必要があります。
 
アクティビティレベルを取得する

// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();

// ビデオオブジェクトに関連付ける
my_video.attachVideo(camera_obj);

// モーション検出の設定(検出精度、タイムアウト)
camera_obj.setMotionLevel(20,1000);

// モーション検出に関するイベント(ダミー)
camera_obj.onActivity = null;

// 毎フレーム実行されるイベント
onEnterFrame = function(){

	trace("アクティビティレベル:" + camera_obj.activityLevel);

};
 




HAKUHIN's home page バナー http://hakuhin.jp/
(c) Hakuhin & 日新礼符 2002-2011 解像度1024×768以上 IE8.0以上推奨
/ 閲覧中: