Flashゲーム講座 & アクションスクリプトサンプル集

 

ビデオを作成する

 


■Video クラスについて

 
Video クラスは、Flash に配置して表示できるオブジェクトの1つです。
 
外部にある動画ファイルを読み込んで再生したり、Webカメラの映像を表示することができます。
 

■ビデオオブジェクトを作成する

 
MovieClip クラスには、Video オブジェクトを動的に生成するためのメソッドが存在しません。
 
ビデオオブジェクトは、静的に用意する必要があります。
 
■ビデオオブジェクトを静的に用意する
 
ライブラリパネルの、右上のボタンをクリックします。
 
 
メニューから『 新規ビデオ 』を選択します。
 
 
ライブラリに追加された埋め込みビデオを、Flash 上に配置します。
 
プロパティパネルから、インスタンス名をつけます。
 
ここでは my_video と名前を付けます。
 
 

■Video クラスの基本的なプロパティについて

 
Video オブジェクトを、ムービークリップのように制御できるプロパティの一覧です。(一部省略)
 
プロパティ名説明
_xNumberx 座標(水平方向)の位置
_yNumbery 座標(垂直方向)の位置
_rotationNumber0 から 360 までの角度
_xscaleNumberx 軸方向(水平方向)の拡大率 (100 で等倍)
_yscaleNumbery 軸方向(垂直方向)の拡大率 (100 で等倍)
_widthNumber水平方向の大きさ(ピクセル単位)
_heightNumber垂直方向の大きさ(ピクセル単位)
_alphaNumber0 から 100 までの透明度 (100 で通常表示)
_visibleBoolean可視表示の設定
_nameStringインスタンス名の設定
 
ビデオのサイズを変更する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

// ビデオのサイズを変更する
video_obj._x = 10;
video_obj._y = 10;
video_obj._width  = Stage.width  - 20;
video_obj._height = Stage.height - 20;
 


 

動画ファイルを再生する (Flash 7 以降)

 


■外部にある動画ファイルを読み込んで、再生する (Flash 7 以降)

 
NetStream クラスを使用します。
 
こちらで解説しています。
 
■ビデオと NetStream オブジェクトを関連付ける
 
attachVideo() メソッドを使用します。
 
Video.attachVideo ( source ) :Void
第01引数 ObjectNetStream オブジェクトを指定。
戻り値 Voidなし
 
■使用例
 
外部にある動画ファイルを読み込んで、再生する

// ------------------------------------------------------------
// 静的に配置したビデオの参照を取得
// ------------------------------------------------------------
var video_obj = _root.my_video;

// ------------------------------------------------------------
// NetConnection オブジェクトを作成
// ------------------------------------------------------------
var net_connection = new NetConnection();

// 動画ファイル再生用の設定
net_connection.connect( null );

// ------------------------------------------------------------
// NetStream オブジェクトを作成
// ------------------------------------------------------------
var net_stream = new NetStream(net_connection);

// ------------------------------------------------------------
// ビデオと NetStream を関連付け
// ------------------------------------------------------------
video_obj.attachVideo(net_stream);

// ------------------------------------------------------------
// URL を指定して、ストリーム再生を開始する
// ------------------------------------------------------------
net_stream.play ( "http://example.com/video/test.flv" );
 


 

Webカメラの映像を表示する

 


■Webカメラの映像を表示する

 
Webカメラの映像を、ビデオオブジェクトに表示することができます。
 
ビデオと、カメラを関連付けるには、attachVideo() メソッドを使用します。
 
詳しい使用方法は、こちらで解説しています。
 
Webカメラの映像を表示する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

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

// カメラが利用可能
if(camera_obj){

	// ビデオとカメラを関連付け
	video_obj.attachVideo(camera_obj);

}
 


 

映像ソースの解像度を取得する

 


■映像ソースの解像度を取得する

 
映像ソースの解像度を取得するには、以下のプロパティを使用します。
 
width プロパティで 水平方向の大きさをピクセル単位で取得します。
 
height プロパティで 垂直方向の大きさをピクセル単位で取得します。
 
これらのプロパティは、読み取り専用です。
 
■動画ファイルの映像ソースの解像度を取得する場合
 
動画ファイルのストリーム再生が成功するまでは、解像度の取得に失敗します。
 
onEnterFrame イベントなどを使用して、0 以外の数値が得られるまで監視し続けるといいでしょう。
 
動画ファイルの映像ソースの解像度を取得する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

// ネットコネクションオブジェクトを作成
var net_connection = new NetConnection();
net_connection.connect( null );

// ネットストリームオブジェクトを作成
var net_stream = new NetStream (net_connection);

// ビデオとネットストリームを関連付け
video_obj.attachVideo(net_stream);

// ネットストリームに変化があるたびに呼び出されるイベント
net_stream.onStatus = function (info) {

	// ストリーム再生開始(読み込み成功)
	if(info.code == "NetStream.Play.Start"){

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

			// 解像度の取得を試みる
			var video_width  = video_obj.width;
			var video_height = video_obj.height;

			// 解像度の取得に成功した
			if(video_width && video_height){

				// ビデオオブジェクトのサイズを変更
				video_obj._width  = video_width;
				video_obj._height = video_height;

				// 出力テスト
				trace("w:" + video_width);
				trace("h:" + video_height);

				// イベントハンドラを無効化
				net_stream.onStatus = null;
				onEnterFrame = null;
			}
		};
	}
};

// URL を指定して、ストリーム再生を開始する
net_stream.play ("http://hakuhin.jp/test.flv");
 
■Webカメラの映像ソースの解像度を取得する場合
 
Webカメラの映像ソースの解像度を取得する場合、Camera オブジェクト側のプロパティを使用します。
 
Video オブジェクトからアクセスすると、取得に失敗したり、変更前の古い結果が得られる事があります。
 
Webカメラの映像ソースの解像度を取得する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

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

// カメラが利用可能
if(camera_obj){
	// ビデオとカメラを関連付け
	video_obj.attachVideo(camera_obj);

	// Camera クラスから解像度を取得
	var camera_width  = camera_obj.width;
	var camera_height = camera_obj.height;

	// ビデオオブジェクトのサイズを変更
	video_obj._width  = camera_width;
	video_obj._height = camera_height;

	// 出力テスト
	trace("w:" + camera_width);
	trace("h:" + camera_height);
}
 


 

スムージングを設定する

 


■スムージングを設定する

 
スムージングを設定するには、smoothing プロパティを使用します。
 
true をセットすると、スムージング表示が有効になります。(画質が低以外の場合)
 
デフォルトは、false です。
 
ビデオにスムージングを設定する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

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

// カメラが利用可能
if(camera_obj){
	// ビデオとカメラを関連付け
	video_obj.attachVideo(camera_obj);

	// ビデオのスムージング表示を有効
	video_obj.smoothing = true;

	// 低解像度に設定(テスト確認用)
	camera_obj.setMode(100,75,30);

	// ビデオのサイズを、実際の解像度の10倍に変更(テスト確認用)
	video_obj._width  = camera_obj.width  * 10;
	video_obj._height = camera_obj.height * 10;
}
 


 

非ブロッキングフィルタを設定する

 


■非ブロッキングフィルタを設定する

 
非ブロッキングフィルタを設定するには、deblocking プロパティを使用します。
 
低ビットレートの動画再生時に効果的です
 
非ブロックフィルタ未使用
 
非ブロックフィルタ使用
 
Sorenson コーデックの場合
 
Sorenson コーデック使用時は、以下の数値を指定します。
 
2 より大きい数値を指定した場合、2 が適用されます。
 
数値 説明
0 自動的に非ブロックフィルタの使用を切り替えます。(通常)
1 非ブロックフィルタを使用しません。
2 非ブロックフィルタを使用します。
 
On2 VP6 コーデックの場合
 
On2 VP6 コーデック使用時は、以下の数値を指定します。
 
数値 説明
0 自動的に非ブロックフィルタの使用を切り替えます。(通常)
1 非ブロックフィルタを使用しません。
3 非ブロックフィルタを使用します。リンギング除去フィルタを使用しません。
4 非ブロックフィルタを使用します。リンギング除去フィルタを使用します。(低品質、低負荷)
5 非ブロックフィルタを使用します。リンギング除去フィルタを使用します。(高品質、高負荷)
 
非ブロッキングフィルタを設定する

// 静的に配置したビデオの参照を取得
var video_obj = _root.my_video;

// ネットコネクションオブジェクトを作成
var net_connection = new NetConnection();
net_connection.connect( null );

// ネットストリームオブジェクトを作成
var net_stream = new NetStream (net_connection);

// ビデオとネットストリームを関連付け
video_obj.attachVideo(net_stream);

// URL を指定して、ストリーム再生を開始する
net_stream.play ("http://hakuhin.jp/test.flv");

// 非ブロッキングフィルタを設定する
video_obj.deblocking = 5;