Webカメラの映像を表示する
サンプルをダウンロード
■Flash Player の設定について
■カメラへのアクセス許可
カメラを使用するには、ユーザーがカメラへのアクセスを許可する必要があります。
Flash Player の設定画面から、カメラへのアクセスを設定することができます。
■カメラの種類を選択
Flash Player の設定画面から、カメラの種類を選択することができます。
■Webカメラの映像を表示する
1.Video オブジェクトを作成する
ライブラリパネルの、右上のボタンをクリックします。
メニューから『 新規ビデオ 』を選択します。
ライブラリに追加された埋め込みビデオを、Flash 上に配置します。
プロパティパネルから、インスタンス名をつけます。
ここでは my_video と名前を付けます。
Video クラスについては、こちらで解説しています。
2.Camera オブジェクトを取得する
Camera オブジェクトを取得するには、Camera.get() メソッドを使用します。
第01引数を省略した場合、Flash Player の設定画面で選択したカメラデバイスを取得できます。
カメラが利用できない場合、null が得られます。
Camera.get ( 番号 ) :Camera
第01引数(略可) | Number | 取得したいカメラデバイスを 0 からの番号で指定。(複数のカメラデバイスが存在する場合) |
戻り値 | Camera | Camera オブジェクトが得られる。カメラが利用できない場合 null |
デフォルトのカメラオブジェクトを取得
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// 出力テスト
trace(camera_obj);
複数のカメラオブジェクトを取得
// 0 番目のカメラオブジェクトを取得
var camera_obj0 = Camera.get(0);
// 1 番目のカメラオブジェクトを取得
var camera_obj1 = Camera.get(1);
// 出力テスト
trace(camera_obj0);
trace(camera_obj1);
3.ビデオとカメラを関連付ける
ビデオとカメラを関連付けるには、attachVideo() メソッドを使用します。
Video オブジェクトから呼び出し、引数に「Camera オブジェクト」を指定します。
ビデオとカメラを関連付ける
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
}
■ユーザーがカメラへのアクセスを許可しているか調べる
■カメラへのアクセス許可設定について
プログラムからカメラへのアクセスを試みると、以下の様な確認ダイアログが表示されます。
ユーザーが、カメラへのアクセスを拒否した場合、カメラ機能を利用することはできません。
■カメラへのアクセス許可設定を調べる
ユーザーが、カメラへのアクセスを許可しているか調べるには、muted プロパティを使用します。
true であれば、利用できません。
カメラ機能のミュート設定を調べる
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
trace("カメラ機能のミュート設定:" + camera_obj.muted);
}
■「カメラへのアクセス許可設定」の変更を監視する
「カメラへのアクセス許可設定」の変更を監視するには、onStatus イベントを使用します。
引数から得られるオブジェクトの、code プロパティから結果を取得できます。
以下の種類があります。
文字列 | 名称 |
"Camera.Muted" | カメラへのアクセスが拒否に変化した |
"Camera.Unmuted" | カメラへのアクセスが許可に変化した |
カメラのアクセス許可設定の結果を取得する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// カメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// カメラへのアクセス許可が変化した時に実行されるイベント
camera_obj.onStatus = function (info) {
switch(info.code){
case "Camera.Unmuted":
trace("カメラ利用可能");
break;
case "Camera.Muted":
trace("カメラ利用不可能");
break;
}
};
}
■カメラデバイスの総数を取得する
カメラデバイスの総数を調べるには、Camera.names.length プロパティを使用します。
カメラデバイスの総数を取得
// カメラデバイスの総数を取得
var num = Camera.names.length;
// 出力テスト
trace(num);
■カメラデバイスの名称を取得する
■カメラデバイスの名称をまとめて取得する
カメラデバイスの名称を、配列としてまとめて取得するには、Camera.names プロパティを使用します。
カメラデバイスの名称を順番に列挙する
// カメラデバイスの名称をまとめて取得する
var camera_names = Camera.names;
var i;
var num = camera_names.length;
for(i=0;i < num;i++){
// デバイス名を出力
trace("id:" + i + " name:" + camera_names[i]);
}
■カメラオブジェクトからデバイスの名称を取得する
カメラオブジェクトから、デバイスの名称を取得するには、name プロパティを使用します。
カメラデバイスの名称を順番に列挙する
var i;
var num = Camera.names.length;
for(i=0;i < num;i++){
// カメラオブジェクトを取得
var camera_obj = Camera.get(i);
// デバイス名を出力
trace("id:" + i + " name:" + camera_obj.name);
}
キャプチャモードを設定する
■キャプチャモードを設定する
カメラデバイスから入力される、映像ソースの解像度と、フレームレートを設定する事ができます。
解像度が大きいほど、負荷が高くなり、フレームレートが低下する可能性があります。
■解像度とフレームレートを設定する
映像ソースの解像度とフレームレートを設定するには、setMode() メソッドを使用します。
デバイスが、指定した値に対応していない場合、対応している最も近い値が採用されます。
見た目の幅と高さを変更したい場合は、Video オブジェクトを操作します。
Camera.setMode ( 幅 , 高さ , フレームレート , 解像度を優先するか ) :Void
第01引数(略可) | Number | カメラの入力解像度の幅(デフォルトは 160) |
第02引数(略可) | Number | カメラの入力解像度の高さ(デフォルトは 120) |
第03引数(略可) | Number | カメラの入力フレームレート(デフォルトは 15) |
第04引数(略可) | Boolean | 解像度を優先して処理するなら true、フレームレートを優先して処理するなら false。(デフォルトは true) |
戻り値 | Void | なし |
解像度とフレームレートを設定する
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// キャプチャ用パラメータ
var camera_width = 400;
var camera_height = 300;
var camera_fps = 30;
// 解像度とフレームレートを設定する
camera_obj.setMode(camera_width,camera_height,camera_fps);
}
■実際に設定された解像度とフレームレートを取得する
実際に設定された解像度を調べるには、width と height プロパティを使用します。
実際に設定されたフレームレートを調べるには、fps プロパティを使用します。
これらのプロパティは、読み取り専用です。
実際に設定されたキャプチャモードの設定を取得する
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// キャプチャ用パラメータ
var camera_width = 400;
var camera_height = 300;
var camera_fps = 30;
// 解像度とフレームレートを設定する
camera_obj.setMode(camera_width,camera_height,camera_fps);
// 出力テスト
trace("幅:" + camera_obj.width);
trace("高さ:" + camera_obj.height);
trace("フレームレート:" + camera_obj.fps);
}
■実測のフレームレートを取得する
実測のフレームレートを調べるには、currentFps プロパティを使用します。
このプロパティは、読み取り専用です。
実測のフレームレートを取得する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// キャプチャ用パラメータ
var camera_width = 400;
var camera_height = 300;
var camera_fps = 30;
// 解像度とフレームレートを設定する
camera_obj.setMode(camera_width,camera_height,camera_fps);
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// 毎フレーム実行されるイベント
onEnterFrame = function (){
trace("実測フレームレート:" + camera_obj.currentFps);
};
}
モーションを検出する
■アクティビティとは?
アクティビティとは、活動を意味します。
映像の変化の大きさから、動画状態、静止画状態であるかを検出します。
■モーションの有無の切り替わりを検出する
モーションの有無の切り替わりを検出するには、onActivity イベントを使用します。
登録した関数の引数から、Boolean 値が得られます。
true … 動画状態
false … 静止画状態
モーションの有無の切り替わりを検出する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// モーションの有無が切り替わると呼び出されるイベント
camera_obj.onActivity = function (activity) {
if(activity){
trace("動画状態");
}else{
trace("静止画状態");
}
};
}
■モーション検出のしきい値を設定する
モーション検出のしきい値を設定するには、setMotionLevel() メソッドを使用します。
Camera.setMotionLevel ( しきい値 , タイムアウト ) :Void
第01引数 | Number | 0 ~ 100 までのしきい値を指定。0 に近いほど少しの変化でもモーションとして検出する。(デフォルトは 50) |
第02引数(略可) | Number | 静止画状態と判定するまでのタイムアウト時間を指定(単位:ミリ秒)(デフォルトは 2000) |
戻り値 | Void | なし |
モーション検出のしきい値を設定する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// モーション検出のしきい値を設定
camera_obj.setMotionLevel(10,0);
// モーションの有無が切り替わると呼び出されるイベント
camera_obj.onActivity = function (activity) {
if(activity){
trace("動画状態");
}else{
trace("静止画状態");
}
};
}
■モーション検出のしきい値を取得する
モーション検出のしきい値を取得するには、motionLevel プロパティを使用します。
静止画状態と判定するまでの時間(単位:ミリ秒)を取得するには、motionTimeOut プロパティを使用します。
これらのプロパティは、読み取り専用です。
モーション検出のしきい値を取得する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// モーション検出のしきい値を設定
camera_obj.setMotionLevel(10,0);
// モーション検出のしきい値を取得する
trace(camera_obj.motionLevel);
// 静止画状態と判定するまでの時間を取得
trace(camera_obj.motionTimeOut);
}
■モーションの実測値を取得する
モーションの実測値を取得するには、activityLevel プロパティを使用します。
このプロパティを利用するには、onActivity イベントに関数を登録しておく必要があります。
0 から 100 までの値が得られます。
100 に近いほど大きく変化している事がわかります。
-1 が得られる場合、カメラデバイスの準備ができていません。
アクティビティレベルを取得する
// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;
// デフォルトのカメラオブジェクトを取得
var camera_obj = Camera.get();
// カメラが利用可能
if(camera_obj){
// ビデオとカメラを関連付け
video_obj.attachVideo(camera_obj);
// モーションの有無が切り替わると呼び出されるイベント
camera_obj.onActivity = function (activity) {
trace("アクティビティ:" + activity);
};
// 毎フレーム実行されるイベント
onEnterFrame = function (){
trace("アクティビティレベル:" + camera_obj.activityLevel);
};
}