| パッケージ | flash.media |
| クラス | public final class Camera |
| 継承 | Camera EventDispatcher Object |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
オーディオのキャプチャに関する詳細については、Microphone クラスのトピックを参照してください。
重要 : ユーザーがカメラへのアクセスを許可するか拒否するかを選択できるように、Flash Player で [プライバシー] ダイアログボックスが表示されます。アプリケーションウィンドウのサイズは 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。
Camera オブジェクトを作成または参照するには、getCamera() メソッドを使います。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| activityLevel : Number [読み取り専用]
カメラが検知しているモーション量です。 | Camera | ||
| bandwidth : int [読み取り専用]
現在の送信ビデオフィードで使用できる最大帯域幅 (バイト単位) です。 | Camera | ||
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
| currentFPS : Number [読み取り専用]
現在のデータキャプチャレート (1 秒あたりのフレーム数) です。 | Camera | ||
| fps : Number [読み取り専用]
カメラの最大データキャプチャレート (1 秒あたりのフレーム数) です。 | Camera | ||
| height : int [読み取り専用]
現在のキャプチャの高さ (ピクセル単位) です。 | Camera | ||
| index : int [読み取り専用]
カメラのインデックスを指定するゼロから始まる整数です。これは、names プロパティから返される配列のインデックスと同じです。 | Camera | ||
| keyFrameInterval : int [読み取り専用]
ビデオ圧縮アルゴリズムによって補間されるのではなく、完全送信されるビデオフレーム (キーフレームと呼ばれる) の数です。 | Camera | ||
| loopback : Boolean [読み取り専用]
カメラがキャプチャするローカルビューを、Flash Media Server を使用したライブ送信で使用されるように圧縮および解凍する (true) か、または圧縮されていない状態にする (false) かを示します。 | Camera | ||
| motionLevel : int [読み取り専用]
activity イベントを送出するために必要なモーションの量です。 | Camera | ||
| motionTimeout : int [読み取り専用]
カメラがモーション検知を停止してから、activity イベントが呼び出されるまでの時間 (ミリ秒単位) です。 | Camera | ||
| muted : Boolean [読み取り専用]
ユーザーが Flash Player の [プライバシー] ダイアログボックスでカメラへのアクセスを拒否した (true) か、許可した (false) かを示すブール値です。 | Camera | ||
| name : String [読み取り専用]
カメラのハードウェアから返される、現在のカメラの名前です。 | Camera | ||
| names : Array [静的] [読み取り専用]
[Adobe Flash Player 設定] パネルの [プライバシー] を表示せずに、使用できるすべてのカメラの名前を示すストリング配列です。 | Camera | ||
![]() | prototype : Object [静的]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| quality : int [読み取り専用]
必要な画質レベルです。各ビデオフレームに適用される圧縮率によって決まります。 | Camera | ||
| width : int [読み取り専用]
現在のキャプチャの幅 (ピクセル単位) です。 | Camera | ||
| メソッド | 定義元 | ||
|---|---|---|---|
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | |
![]() |
イベントをイベントフローに送出します。 | EventDispatcher | |
[静的]
ビデオをキャプチャする Camera オブジェクトへの参照を返します。 | Camera | ||
![]() |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | |
ビデオ圧縮アルゴリズムによって補間されずに完全に送信されるビデオフレーム (キーフレームと呼ばれる) を指定します。 | Camera | ||
カメラのローカルビューに対して圧縮したビデオストリームを使用するかどうかを指定します。 | Camera | ||
カメラのキャプチャモードを指定の要件に最も近いネイティブモードに設定します。 | Camera | ||
activity イベントを送出するために必要なモーションの量を指定します。 | Camera | ||
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
現在の送信ビデオフィードの 1 秒あたりの最大帯域幅、または必要な画質を設定します。 | Camera | ||
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
![]() |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher | |
| イベント | 概要 | 定義元 | ||
|---|---|---|---|---|
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | ||
| カメラがセッションを開始または終了したときに送出されます。 | Camera | |||
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | ||
| カメラがそのステータスをレポートしたときに送出されます。 | Camera | |||
| activityLevel | プロパティ |
activityLevel:Number [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラが検知しているモーション量です。0 (モーションは検知されていない) から 100 (大量のモーションが検知されている) までの値が設定されます。このプロパティの値は、setMotionLevel() メソッドに設定を渡す必要があるかどうかを判断するのに役立ちます。
Video.attachCamera() メソッドが呼び出されていないため、使用可能なカメラがまだ使用されていない場合は、このプロパティが -1 に設定されます。
圧縮されていないローカルビデオだけをストリーミングする場合、このプロパティはイベントハンドラに関数を割り当て済みであるときに限り設定されます。それ以外の場合は undefined になります。
public function get activityLevel():Number関連項目
| bandwidth | プロパティ |
bandwidth:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在の送信ビデオフィードで使用できる最大帯域幅 (バイト単位) です。値 0 は、ビデオのフレーム品質を維持するために必要な帯域幅をフィードで使用できることを示します。
このプロパティの値を設定するには、setQuality() メソッドを使用します。
public function get bandwidth():int関連項目
| currentFPS | プロパティ |
currentFPS:Number [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在のデータキャプチャレート (1 秒あたりのフレーム数) です。このプロパティを設定することはできません。ただし、setMode() メソッドを使用すると、これに関係する fps プロパティを設定することができます。このプロパティは、データをキャプチャする際の希望最大フレームレートを指定します。
public function get currentFPS():Number関連項目
| fps | プロパティ |
fps:Number [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラの最大データキャプチャレート (1 秒あたりのフレーム数) です。最大データキャプチャレートは、カメラの性能によって異なります。このフレームレートを実現できない場合があります。
setMode() メソッドを使用します。currentFPS プロパティを使用します。 public function get fps():Number関連項目
| height | プロパティ |
height:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在のキャプチャの高さ (ピクセル単位) です。このプロパティに値を設定するには、setMode() メソッドを使用します。
public function get height():int関連項目
| index | プロパティ |
index:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラのインデックスを指定するゼロから始まる整数です。これは、names プロパティから返される配列のインデックスと同じです。
public function get index():int関連項目
| keyFrameInterval | プロパティ |
keyFrameInterval:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ビデオ圧縮アルゴリズムによって補間されるのではなく、完全送信されるビデオフレーム (キーフレームと呼ばれる) の数です。デフォルト値は 15 で、15 のフレームごとにフレームがキーフレームになります。1 はすべてのフレームがキーフレームであることを意味します。設定できる値は、1 ~ 48 です。
public function get keyFrameInterval():int関連項目
| loopback | プロパティ |
loopback:Boolean [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラがキャプチャするローカルビューを、Flash Media Server を使用したライブ送信で使用されるように圧縮および解凍する (true) か、または圧縮されていない状態にする (false) かを示します。デフォルト値は false です。
圧縮したストリームは、ビデオの品質設定のプレビューなど、テスト目的で使用する場合には役立ちますが、非常に処理コストがかかります。ローカルビューは圧縮され、送信するためにライブ接続で使用されるように編集され、さらにローカルで表示するために解凍されます。
この値を設定するには、Camera.setLoopback() () を使用します。このプロパティが true である場合に使用する圧縮率を設定するには、Camera.setQuality() () を使用します。
public function get loopback():Boolean関連項目
| motionLevel | プロパティ |
motionLevel:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
activity イベントを送出するために必要なモーションの量です。使用可能な値の範囲は 0 ~ 100 です。デフォルト値は 50 です。
ビデオは motionLevel プロパティの値に関係なく表示できます。詳細については、
setMotionLevel()を参照してください。
public function get motionLevel():int関連項目
| motionTimeout | プロパティ |
motionTimeout:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラがモーション検知を停止してから、activity イベントが呼び出されるまでの時間 (ミリ秒単位) です。デフォルト値は 2000 (2 秒) です。
この値を設定するには、setMotionLevel() () を使用します。
public function get motionTimeout():int関連項目
| muted | プロパティ |
muted:Boolean [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ユーザーが Flash Player の [プライバシー] ダイアログボックスでカメラへのアクセスを拒否した (true) か、許可した (false) かを示すブール値です。この値が変わると、status イベントが送出されます。
public function get muted():Boolean関連項目
| name | プロパティ |
name:String [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラのハードウェアから返される、現在のカメラの名前です。
public function get name():String関連項目
| names | プロパティ |
names:Array [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
[Adobe Flash Player 設定] パネルの [プライバシー] を表示せずに、使用できるすべてのカメラの名前を示すストリング配列です。この配列は ActionScript の他の配列と同じように動作します。この配列を使用して、それぞれのカメラの 0 から始まるインデックスと、システム上のカメラの数 (names.length) を調べることができます。詳細については、Array クラスの names を参照してください。
names プロパティが呼び出されると、ハードウェアを広範囲にわたって調べる必要があります。このため、配列を作成するまでに数秒間かかることがあります。ほとんどの場合は、デフォルトのカメラを使用できます。
public static function get names():Array関連項目
| quality | プロパティ |
quality:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
必要な画質レベルです。各ビデオフレームに適用される圧縮率によって決まります。指定できる品質値は 1 (最低品質、最大圧縮率) ~ 100 (最高品質、圧縮なし) です。デフォルト値は 0 です。これは、使用できる帯域幅を超えることがないように、画質が必要に応じて変更されることを示します。
このプロパティの値を設定するには、setQuality() メソッドを使用します。
public function get quality():int関連項目
| width | プロパティ |
width:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在のキャプチャの幅 (ピクセル単位) です。このプロパティに必要な値を設定するには、setMode() メソッドを使用します。
public function get width():int関連項目
| getCamera | () | メソッド |
public static function getCamera(name:String = null):Camera| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ビデオをキャプチャする Camera オブジェクトへの参照を返します。ビデオのキャプチャを開始するには、Camera オブジェクトを Video オブジェクトに関連付ける必要があります。詳細については、Video.attachCamera()
() のトピックを参照してください。ビデオを Flash Media Server に送信するには、NetStream.attachCamera() を呼び出して、Camera オブジェクトを NetStream オブジェクトに関連付けます。
getCamera() メソッドを複数回呼び出した場合は、同じカメラドライバを参照します。したがって、firstCam:Camera = getCamera() と secondCam:Camera = getCamera() のようなコードが含まれている場合、firstCam と secondCam はどちらも、ユーザーのデフォルトである同じカメラを参照します。
一般には、name パラメータの値は指定せず、単に getCamera() を使用してデフォルトのカメラへの参照を返します。ユーザーは、このセクションで後述する [カメラ] ボックスで、Flash Player で使用するデフォルトのカメラを指定できます。
カメラへのアクセスについてユーザーの許可または拒否の権限を ActionScript を使って設定することはできませんが、[Adobe Flash Player 設定] ダイアログボックスの [カメラ] タブを表示してカメラ権限を設定することはできます。attachCamera() メソッドを使用する SWF ファイルが getCamera() メソッドによって返されたカメラを Video オブジェクトまたは NetStream オブジェクトに接続しようとすると、Flash Player はカメラへのアクセスの許可または拒否をユーザーが選択できるダイアログボックスを表示します。アプリケーションウィンドウのサイズは必ず 215×138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な Flash Player の最小サイズです。ユーザーがカメラ設定ダイアログボックスに応答すると、Flash Player はユーザーの応答を示す status イベントで情報オブジェクトを返します。Camera.muted はユーザーがカメラへのアクセスを拒否したことを示し、Camera.Unmuted は許可したことを示します。status イベントを使用せずにユーザーがカメラへのアクセスを拒否したか許可したかを判断するには、muted プロパティを使用します。
再生中の SWF ファイルを右クリック(Windows および Linux)または Control キーを押しながらクリック(Macintosh)し、設定を選択してプライバシーダイアログで「後で確認」を選択すると、ユーザーは特定のドメインに対する永続的なプライバシー設定を指定できます。ユーザーが [後で確認] を選択していた場合、SWF ファイルがこのドメインからカメラにアクセスすることを許可するか拒否するかを確認するメッセージは表示されません。
メモ:ユーザーが Flash Player 設定のダイアログボックスの「後で確認」を選択してカメラへのアクセスを拒否している場合、attachCamera() メソッドはカメラへのアクセスを許可したり拒否したりするためのダイアログボックスの呼び出しを行いません。この場合、Security.showSettings(SecurityPanel.PRIVACY) ) を使用するユーザーに対して [Adobe Flash Player 設定] パネルの [プライバシー] を表示して許可または拒否の設定を変更するように要求することができます。
getCamera() が null を返した場合、カメラは他のアプリケーションによって使用されているか、そのシステムにはカメラが取り付けられていません。カメラがインストールされているかどうかを調べるには、names.length プロパティを使用します。Flash Player 設定パネルの「カメラ」を表示して、getCamera() が参照するカメラをユーザーが選択できるようにするには、Security.showSettings(SecurityPanel.CAMERA) を使用します。
カメラのハードウェアスキャンには時間がかかります。カメラが 1 つでも見つかると、その Flash Player インスタンスの存続中は、ハードウェアが再びスキャンされることはありません。しかし、カメラが見つからなかった場合は、getCamera が呼び出されるたびにハードウェアがスキャンされます。この動作は、ユーザーがカメラを接続するのを忘れた場合に便利です。getCamera を呼び出すための [再試行] ボタンを SWF ファイルに用意すると、ユーザーが SWF ファイルを再起動しなくてもカメラを見つけることができます。
パラメータ
name:String (default = null) — 取得するカメラを names プロパティで返される配列から決定します。多くのアプリケーションでは、パラメータを省略してデフォルトのカメラを取得します。このパラメータの値を指定するには、Camera.names 配列内の 0 ベースのインデックス位置のストリング表現を使用します。たとえば、配列内の 3 番目のカメラを指定するには、Camera.getCamera("2") ") を使用します。
|
Camera — name パラメータを指定しない場合は、デフォルトのカメラへの参照を返します。デフォルトのカメラが他のアプリケーションで使用されている場合は、使用できる最初のカメラへの参照を返します。複数のカメラがインストールされている場合、ユーザーは [Flash Player 設定] パネルの [カメラ] でデフォルトのカメラを指定できます。利用できるカメラがない場合、またはカメラがインストールされていない場合は、null を返します。
|
status: — カメラがそのステータスをレポートしたときに送出されます。code プロパティの値が "Camera.muted" である場合、SWF ファイルのカメラへのアクセス許可を拒否したことになります。code プロパティの値が "Camera.Unmuted" である場合、ユーザーは SWF ファイルのユーザーのカメラへのアクセスを許可しています。 |
関連項目
Camera.getCamera() メソッドは、カメラオブジェクトへの参照を返します。利用できるカメラがない場合、またはカメラが取り付けられていない場合は、null を返します。カメラが見つかったかどうか、およびユーザーがカメラへのアクセスを許可したかどうかを if ステートメントでチェックします。 ユーザーがアクセスを拒否した場合、muted プロパティは true に設定されます。
通常は attachCamera() メソッドが呼び出されると、Flash Player によるカメラへのアクセスを許可するかどうかをユーザーに確認するダイアログボックスが表示されます。ただし、ユーザーがアクセスを拒否し、Remember オプションを選択した場合、ダイアログボックスなどは何も表示されません。ユーザーがカメラへのアクセスを許可するオプションを使用できるように、Flash Player 設定ダイアログボックスを起動するためにテキストフィールドをクリックするようにという指示が myTextField テキストフィールドに表示されます。
clickHandler() メソッドは Security.showSettings() メソッドを呼び出します。これにより、設定ダイアログボックスの PRIVACY パネルが表示されます。ユーザーがアクセスを許可した場合、StatusEvent.STATUS イベントが送出され、イベントの code プロパティの値が Camera.Unmuted に設定されます。 (同時にカメラオブジェクトの mute プロパティが false に設定されます)。
ユーザーがアクセスを許可した場合、ユーザーの設定のステータス変更をリスニングするために追加された statusHandler() メソッドにより、connectCamera() メソッドが呼び出されます。connectCamera() メソッドは、キャプチャされたストリームの幅と高さを使用してビデオオブジェクトをインスタンス化します。カメラでキャプチャされたビデオを表示するため、ビデオストリームへの参照をビデオオブジェクトに関連付けて、ビデオオブジェクトを表示リストに追加します。
さらに、Timer オブジェクトを開始します。1 秒ごとに Timer オブジェクトのタイマーイベントが送出され、timerHandler() メソッドが呼び出されます。timerHandler() メソッドが表示され、Camera オブジェクトのいくつかのプロパティが更新されます。
メモ : この例では、変更されるプロパティは currentFPS プロパティのみです。
package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.StatusEvent;
import flash.events.MouseEvent;
import flash.system.SecurityPanel;
import flash.system.Security;
public class Camera_getCameraExample extends Sprite {
private var myTextField:TextField;
private var cam:Camera;
private var t:Timer = new Timer(1000);
public function Camera_getCameraExample() {
myTextField = new TextField();
myTextField.x = 10;
myTextField.y = 10;
myTextField.background = true;
myTextField.selectable = false;
myTextField.autoSize = TextFieldAutoSize.LEFT;
cam = Camera.getCamera();
if (!cam) {
myTextField.text = "No camera is installed.";
} else if (cam.muted) {
myTextField.text = "To enable the use of the camera,\n"
+ "please click on this text field.\n"
+ "When the Flash Player Settings dialog appears,\n"
+ "make sure to select the Allow radio button\n"
+ "to grant access to your camera.";
myTextField.addEventListener(MouseEvent.CLICK, clickHandler);
}else {
myTextField.text = "Connecting";
connectCamera();
}
addChild(myTextField);
t.addEventListener(TimerEvent.TIMER, timerHandler);
}
private function clickHandler(e:MouseEvent):void {
Security.showSettings(SecurityPanel.PRIVACY);
cam.addEventListener(StatusEvent.STATUS, statusHandler);
myTextField.removeEventListener(MouseEvent.CLICK, clickHandler);
}
private function statusHandler(event:StatusEvent):void {
if (event.code == "Camera.Unmuted") {
connectCamera();
cam.removeEventListener(StatusEvent.STATUS, statusHandler);
}
}
private function connectCamera():void {
var vid:Video = new Video(cam.width, cam.height);
vid.x = 10;
vid.y = 10;
vid.attachCamera(cam);
addChild(vid);
t.start();
}
private function timerHandler(event:TimerEvent):void {
myTextField.y = cam.height + 20;
myTextField.text = "";
myTextField.appendText("bandwidth: " + cam.bandwidth + "\n");
myTextField.appendText("currentFPS: " + Math.round(cam.currentFPS) + "\n");
myTextField.appendText("fps: " + cam.fps + "\n");
myTextField.appendText("keyFrameInterval: " + cam.keyFrameInterval + "\n");
}
}
}
| setKeyFrameInterval | () | メソッド |
public function setKeyFrameInterval(keyFrameInterval:int):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ビデオ圧縮アルゴリズムによって補間されるのではなく、(キーフレームと呼ばれる) 完全送信されるビデオフレームを指定します。このメソッドは、Flash Media Server を使用してビデオを送信している場合にだけ使用できます。
Flash Video 圧縮アルゴリズムでは、ビデオの最後のフレームからの変更のみを送信して、ビデオを圧縮します。これらの変更部分が補間フレームと見なされます。ビデオのフレームは、前のフレームの内容に応じて補間されます。ただし、キーフレームは完全なビデオフレームであるため、前のフレームから補間されることはありません。
keyFrameInterval パラメータの値を設定する方法を判別するには、帯域幅の使用量とビデオ再生アクセシビリティの両方を検討します。例えば、keyFrameInterval に対して大きい値を指定すると (キーフレームの送信が少なくなる)、帯域幅の使用量が減少します。ただし、これはビデオの特定のポイントで再生ヘッドの位置を指定する際に要する時間を増やすことになります。つまり、ビデオを再開する際、より多くの先行ビデオフレームを補間しなければならない場合があります。
逆に、keyFrameInterval に対して小さい値を指定すると (キーフレームの送信が多くなる)、ビデオフレーム全体の送信が多くなるため、帯域幅の使用量が増加しますが、録画済みのビデオ内で特定のビデオフレームをシークする際に要する時間は減ります。
パラメータ
keyFrameInterval:int — ビデオ圧縮アルゴリズムによって補間されるのではなく、(キーフレームとして) 完全送信されるビデオフレームを指定する値です。1 を指定すると、すべてのフレームがキーフレームになり、3 を指定すると、3 つのフレームごとにフレームがキーフレームになります (以下同様)。有効な値は、1 ~ 48 です。
|
関連項目
| setLoopback | () | メソッド |
public function setLoopback(compress:Boolean = false):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラのローカルビューに対して圧縮したビデオストリームを使用するかどうかを指定します。このメソッドは、Flash Media Server を使用してビデオを送信している場合にだけ使用できます。compress を true に設定すると、リアルタイムで表示したときの、ユーザーに対するビデオの表示状態をより正確に確認できます。
圧縮したストリームは、ビデオの品質設定のプレビューなど、テスト目的で使用する場合には役立ちますが、ローカルビューは単に圧縮されるだけではないので、非常に処理コストがかかります。ローカルビューは圧縮された後、ライブ接続で送信する場合と同じように編集され、さらにローカルで表示するために解凍されます。
compress を true に設定した場合に使用する圧縮率を設定するには、Camera.setQuality() () を使用します。
パラメータ
compress:Boolean (default = false) — カメラが受け取るローカルビューに対して、圧縮したビデオストリーム (true) を使用するか、または圧縮されていないストリーム (false) を使用するかを指定します。
|
関連項目
| setMode | () | メソッド |
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラのキャプチャモードを指定の要件に最も近いネイティブモードに設定します。指定したすべてのパラメータに一致するネイティブモードがカメラにない場合は、要求したモードに最も近いキャプチャモードが選択されます。これにより、画像の一部が切り取られたり、フレームが削除される可能性があります。
デフォルトでは、画像のサイズを維持するために、必要に応じてフレームが削除されます。削除されるフレームの数を最小限に抑えるには、false を favorArea パラメータで渡します。ただし、これによって画像のサイズは小さくなります。
ネイティブモードを選択した場合は、指定した縦横比ができる限り維持されます。例えば、myCam.setMode(400, 400, 30) コマンドを実行し、そのカメラで利用できる最大の幅と高さが 320 および 288 である場合は、幅と高さがともに 288 に設定されます。幅と高さを同じ値に設定することで、要求された 1:1 の縦横比が維持されます。
要求した値に最も近いモードが選択された後に、これらのプロパティに割り当てられた値を調べるには、width、height および fps の各プロパティを使用します。
Flash Media Server を使用する場合は、単一のフレームのキャプチャまたはコマ撮り写真の作成もできます。詳細については、NetStream.attachCamera()を参照してください。
パラメータ
width:int — 要求されたキャプチャの幅 (ピクセル単位) です。デフォルト値は 160 です。
| |
height:int — 要求されたキャプチャの高さ (ピクセル単位) です。デフォルト値は 120 です。
| |
fps:Number — 要求されたデータキャプチャレート (1 秒あたりのフレーム数) です。デフォルト値は 15 です。
| |
favorArea:Boolean (default = true) — 指定要件に合うネイティブモードがカメラにない場合に、幅、高さ、フレームレートをどのように操作するかを指定します。デフォルト値は true で、キャプチャサイズを維持することを示します。このパラメータを使用すると、width 値と height 値に最も近いモードが選択されます。ただし、これによりフレームレートが低下し、パフォーマンスに悪影響を及ぼすことがあります。カメラの高さと幅よりも最大フレームレートを優先するには、false を favorArea パラメータに指定します。
|
関連項目
ステージは拡大 / 縮小されないように設定されます。Camera.getCamera() メソッドは、カメラオブジェクトへの参照を返します。利用できるカメラがない場合、またはカメラが取り付けられていない場合は、null を返します。カメラが存在する場合は、connectCamera() メソッドが呼び出されます。connectCamera() メソッドは、ビデオオブジェクトをインスタンス化します。カメラでキャプチャされたビデオを表示するため、ビデオストリームへの参照をビデオオブジェクトに関連付けて、ビデオオブジェクトを表示リストに追加します。MouseEvent.CLICK イベントのイベントリスナーも設定します。ユーザーがステージをクリックすると、clickHandler() メソッドが呼び出されます。このメソッドはキャプチャされたビデオの幅を確認し、カメラキャプチャモードの幅、高さおよび必要なキャプチャレート (1 秒あたりのフレーム数) を設定します。これらの設定を有効にするために、ビデオオブジェクトを削除して再作成する必要があります。また、ビデオの幅と高さをカメラオブジェクトの幅と高さに設定する必要があります。
package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.events.MouseEvent;
import flash.display.StageScaleMode;
public class Camera_setModeExample extends Sprite {
private var cam:Camera;
private var vid:Video;
public function Camera_setModeExample() {
stage.scaleMode = StageScaleMode.NO_SCALE;
cam = Camera.getCamera();
if (!cam) {
trace("No camera is installed.");
}else {
connectCamera();
}
}
private function connectCamera():void {
vid = new Video();
vid.width = cam.width;
vid.height = cam.height;
vid.attachCamera(cam);
addChild(vid);
stage.addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(e:MouseEvent):void {
switch (cam.width) {
case 160:
cam.setMode(320, 240, 10);
break;
case 320:
cam.setMode(640, 480, 5);
break;
default:
cam.setMode(160, 120, 15);
break;
}
removeChild(vid);
connectCamera();
}
}
}
| setMotionLevel | () | メソッド |
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
activity イベントを送出するために必要なモーションの量を指定します。アクティビティがない場合に、モーションが停止したと判定してイベントを送出するまでの時間をミリ秒単位で設定することもできます。
メモ : ビデオは motionLevel パラメータの値に関係なく表示できます。このパラメータは、ビデオを実際にキャプチャまたは表示するかどうかではなく、イベントを送出するタイミングと状況のみを決定します。
カメラがモーションをまったく検知しないようにするには、motionLevel パラメータに 100 を指定します。この場合、activity イベントは送出されません。この値は、通常はテスト目的にのみ使用します。例えば、イベントが送出されたときに通常トリガされるハンドラを一時的に無効にする場合などに使用します。
カメラが現在検知しているモーションの量を調べるには、activityLevel プロパティを使用します。モーションの精度 (sensitivity) の値がアクティビティの値に直接対応します。モーションがまったく存在しない場合、アクティビティ値は 0 です。継続的にモーションが発生している場合、アクティビティ値は 100 です。移動していない場合、アクティビティ値はモーション精度値よりも低くなります。移動している場合、アクティビティ値は頻繁にモーション精度値を超えます。
このメソッドの目的は Microphone.setSilenceLevel() メソッドに似ています。どちらのメソッドも、activity イベントを送出するタイミングを指定するために使用します。ただし、パブリッシュするストリームに対する影響という点では、この 2 つのメソッドは大きく異なります。
Microphone.setSilenceLevel()は帯域幅を最適化するように設計されています。オーディオストリームが無音と考えられる場合には、オーディオデータは送信されません。代わりに、無音状態が始まったことを示すメッセージが送信されます。 Camera.setMotionLevel()はモーションを検知し、使用する帯域幅には影響しないように設計されています。ビデオストリームでモーションが検知されない間も、ビデオは送信されます。パラメータ
motionLevel:int — activity イベントを送出するために必要なモーションの量を指定します。使用可能な値の範囲は 0 ~ 100 です。デフォルト値は 50 です。
| |
timeout:int (default = 2000) — アクティビティがない場合に、アクティビティが停止したと判定して activity イベントを送出するまでの経過時間をミリ秒単位で指定します。デフォルト値は 2000 ミリ秒 (2 秒) です。
|
関連項目
Camera.getCamera() メソッドは、カメラオブジェクトへの参照を返します。利用できるカメラがない場合、またはカメラが取り付けられていない場合は、null を返します。if ステートメントでカメラが利用できるかどうかをチェックし、利用できる場合は connectCamera() メソッドを呼び出します。connectCamera() メソッドは、キャプチャされたストリームの幅と高さを使用してビデオオブジェクトをインスタンス化します。カメラでキャプチャされたビデオを表示するため、ビデオストリームへの参照をビデオオブジェクトに関連付けて、ビデオオブジェクトを表示リストに追加します。(通常は attachCamera() メソッドが呼び出されると、Flash Player によるカメラへのアクセスを許可するかどうかをユーザーに確認するダイアログボックスが表示されます。ただし、ユーザーがアクセスを拒否し、Remember オプションを選択した場合、ダイアログボックスは表示されず、何も表示されません。ユーザーがカメラへのアクセスを許可するオプションを確実に設定できるようにするため、system.Security.showSettings() メソッドを使用して Flash Player 設定ダイアログボックスを表示します)。
アクティビティイベントが呼び出される前に、setMotionLevel() メソッドによってアクティビティのレベル(モーションの量)を 5(わずかな動きも検出する)に設定します。カメラがモーション検知を停止してからアクティビティイベントが呼び出されるまでの時間を 1 秒 (1000 ミリ秒) に設定します。アクティビティなしの状態で 1 秒が経過するか、またはアクティビティのレベルが 5 に達すると、ActivityEvent.ACTIVITY イベントが送出され、activityHandler() メソッドが呼び出されます。アクティビティのレベルによってイベントがトリガされた場合、activating プロパティが true に設定され、Timer オブジェクトが開始されます。1 秒ごとに Timer オブジェクトのタイマーイベントが送出され、timerHandler() メソッドが呼び出されます。このメソッドにより、現在のアクティビティのレベルが表示されます。 (5 以上のレベルによりタイマーがトリガされますが、表示される現在のアクティビティのレベルはそれより小さい数値になる場合があります。)
package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.ActivityEvent;
public class Camera_setMotionLevelExample extends Sprite {
private var myTextField:TextField;
private var cam:Camera;
private var t:Timer = new Timer(1000);
public function Camera_setMotionLevelExample() {
myTextField = new TextField();
myTextField.background = true;
myTextField.selectable = false;
myTextField.autoSize = TextFieldAutoSize.LEFT;
cam = Camera.getCamera();
if (!cam) {
myTextField.text = "No camera is installed.";
}else {
myTextField.text = "Waiting to connect.";
connectCamera();
}
addChild(myTextField);
t.addEventListener(TimerEvent.TIMER, timerHandler);
}
private function connectCamera():void {
var vid:Video = new Video(cam.width, cam.height);
vid.x = 10;
vid.y = 10;
vid.attachCamera(cam);
addChild(vid);
cam.setMotionLevel(5, 1000);
cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
}
private function activityHandler(e:ActivityEvent):void {
if (e.activating == true) {
t.start();
} else {
myTextField.text = "Everything is quiet.";
t.stop();
}
}
private function timerHandler(event:TimerEvent):void {
myTextField.x = 10;
myTextField.y = cam.height + 20;
myTextField.text = "There is some activity. Level: " + cam.activityLevel;
}
}
}| setQuality | () | メソッド |
public function setQuality(bandwidth:int, quality:int):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在の送信ビデオフィードの 1 秒あたりの最大帯域幅、または必要な画質を設定します。一般に、このメソッドは、Flash Media Server を使用してビデオを送信している場合にだけ使用します。
このメソッドを使用して、送信ビデオフィードの要素として帯域幅と画質のどちらがそのアプリケーションにとって重要かを指定します。
bandwidth に数値を、quality に 0 を指定します。こうすると、指定した帯域幅内で最高品質のビデオが送信されます。必要であれば、指定の帯域幅を超えるのを防ぐために、画質が下げられます。一般には、モーションが増えるほど、画質は下がります。bandwidth に 0 を、quality に数値を指定します。こうすると、指定した画質を維持するために必要なだけの帯域幅が使われます。必要であれば、画質を維持するためにフレームレートが下げられます。一般には、モーションが増えるほど、使用する帯域幅も増加します。パラメータ
bandwidth:int — 現在の送信ビデオフィードで使用できる最大帯域幅 (1 秒あたりのバイト数) を指定します。quality の値を維持するために必要な帯域幅を Flash Player のビデオが使用できるように指定するには、bandwidth で 0 を渡します。デフォルト値は 16384 です。
| |
quality:int — 必要な画質レベルを指定する整数です。各ビデオフレームに適用される圧縮率によって決まります。指定できる値は 1 (最低品質、最大圧縮率) から 100 (最高品質、圧縮なし) までです。帯域幅を超過するのを避けるために必要に応じて画質を変更するには、quality に 0 を指定します。
|
関連項目
| activity | イベント |
flash.events.ActivityEventflash.events.ActivityEvent.ACTIVITY| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラがセッションを開始または終了したときに送出されます。Camera.setMotionLevel() を呼び出して、activity イベントをトリガするために必要なモーション量を指定するか(activating 値を true に設定)、activity イベントをトリガする前に経過する必要があるアクティビティを実行しない時間を指定します(activating 値を false に設定)。
ActivityEvent.ACTIVITY 定数は、type プロパティ(activity イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
activating | デバイスがアクティブになっている場合は true、非アクティブになっている場合は false です。 |
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | Camera オブジェクトや Microphone オブジェクトなど、セッションを開始または終了しているオブジェクトです。 |
| status | イベント |
flash.events.StatusEventflash.events.StatusEvent.STATUS| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
カメラがそのステータスをレポートしたときに送出されます。code プロパティの値が "Camera.Muted" である場合、SWF ファイルのカメラへのアクセス許可を拒否したことになります。code プロパティの値が "Camera.Unmuted" である場合、SWF ファイルのカメラへのアクセスを許可したことになります。
type プロパティ (status イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
code | オブジェクトのステータスの説明です。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
level | "status"、"warning"、"error" など、メッセージのカテゴリです。 |
target | そのステータスをレポートするオブジェクトです。 |
関連項目
activity イベントはセッションの開始時と終了時(存在する場合)に送出され、activityHandler() メソッドによって捕捉されます。このメソッドはイベントの情報を出力します。
メモ : この例を正しく機能させるには、コンピュータにカメラを接続しておく必要があります。
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;
import flash.media.Camera;
import flash.media.Video;
public class CameraExample extends Sprite {
private var video:Video;
public function CameraExample() {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var camera:Camera = Camera.getCamera();
if (camera != null) {
camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
video = new Video(camera.width * 2, camera.height * 2);
video.attachCamera(camera);
addChild(video);
} else {
trace("You need a camera.");
}
}
private function activityHandler(event:ActivityEvent):void {
trace("activityHandler: " + event);
}
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/media/Camera.html