パッケージflash.media
クラスpublic final class Camera
継承Camera Inheritance EventDispatcher Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

Camera クラスを使用すると、Flash Player を実行するコンピュータに接続されたカメラからビデオをキャプチャできます。Video クラスは、ビデオをローカルで監視するために使用します。NetConnection クラスおよび NetStream クラスは、Flash Media Server にビデオを送信するために使用します。Flash Media Server は、他のサーバーにそのビデオストリームを送信し、Flash Player を実行する他のクライアントにブロードキャストできます。

オーディオのキャプチャに関する詳細については、Microphone クラスのトピックを参照してください。

重要 : ユーザーがカメラへのアクセスを許可するか拒否するかを選択できるように、Flash Player で [プライバシー] ダイアログボックスが表示されます。アプリケーションウィンドウのサイズは 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。

Camera オブジェクトを作成または参照するには、getCamera() メソッドを使います。

例を表示

関連項目

flash.media.Microphone
Basics of video


パブリックプロパティ
 プロパティ定義元
  activityLevel : Number
[読み取り専用] カメラが検知しているモーション量です。
Camera
  bandwidth : int
[読み取り専用] 現在の送信ビデオフィードで使用できる最大帯域幅 (バイト単位) です。
Camera
 Inheritedconstructor : 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
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  quality : int
[読み取り専用] 必要な画質レベルです。各ビデオフレームに適用される圧縮率によって決まります。
Camera
  width : int
[読み取り専用] 現在のキャプチャの幅 (ピクセル単位) です。
Camera
パブリックメソッド
 メソッド定義元
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
  
getCamera(name:String = null):Camera
[静的] ビデオをキャプチャする Camera オブジェクトへの参照を返します。
Camera
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  
setKeyFrameInterval(keyFrameInterval:int):void
ビデオ圧縮アルゴリズムによって補間されずに完全に送信されるビデオフレーム (キーフレームと呼ばれる) を指定します。
Camera
  
setLoopback(compress:Boolean = false):void
カメラのローカルビューに対して圧縮したビデオストリームを使用するかどうかを指定します。
Camera
  
setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
カメラのキャプチャモードを指定の要件に最も近いネイティブモードに設定します。
Camera
  
setMotionLevel(motionLevel:int, timeout:int = 2000):void
activity イベントを送出するために必要なモーションの量を指定します。
Camera
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
setQuality(bandwidth:int, quality:int):void
現在の送信ビデオフィードの 1 秒あたりの最大帯域幅、または必要な画質を設定します。
Camera
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited[ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
  カメラがセッションを開始または終了したときに送出されます。Camera
 Inherited[ブロードキャスト イベント] 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 秒あたりのフレーム数) です。最大データキャプチャレートは、カメラの性能によって異なります。このフレームレートを実現できない場合があります。



実装
    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() のようなコードが含まれている場合、firstCamsecondCam はどちらも、ユーザーのデフォルトである同じカメラを参照します。

一般には、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") ") を使用します。

戻り値
Cameraname パラメータを指定しない場合は、デフォルトのカメラへの参照を返します。デフォルトのカメラが他のアプリケーションで使用されている場合は、使用できる最初のカメラへの参照を返します。複数のカメラがインストールされている場合、ユーザーは [Flash Player 設定] パネルの [カメラ] でデフォルトのカメラを指定できます。利用できるカメラがない場合、またはカメラがインストールされていない場合は、null を返します。

イベント
status:StatusEvent — カメラがそのステータスをレポートしたときに送出されます。code プロパティの値が "Camera.muted" である場合、SWF ファイルのカメラへのアクセス許可を拒否したことになります。code プロパティの値が "Camera.Unmuted" である場合、ユーザーは SWF ファイルのユーザーのカメラへのアクセスを許可しています。

関連項目




次の例では、ユーザーがカメラへのアクセスを許可した場合、接続されたカメラを使用してビデオイメージをキャプチャします。 ビデオストリームに関する情報 (現在の 1 秒あたりのフレーム数など) も表示します。

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 を使用してビデオを送信している場合にだけ使用できます。compresstrue に設定すると、リアルタイムで表示したときの、ユーザーに対するビデオの表示状態をより正確に確認できます。

圧縮したストリームは、ビデオの品質設定のプレビューなど、テスト目的で使用する場合には役立ちますが、ローカルビューは単に圧縮されるだけではないので、非常に処理コストがかかります。ローカルビューは圧縮された後、ライブ接続で送信する場合と同じように編集され、さらにローカルで表示するために解凍されます。

compresstrue に設定した場合に使用する圧縮率を設定するには、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

カメラのキャプチャモードを指定の要件に最も近いネイティブモードに設定します。指定したすべてのパラメータに一致するネイティブモードがカメラにない場合は、要求したモードに最も近いキャプチャモードが選択されます。これにより、画像の一部が切り取られたり、フレームが削除される可能性があります。

デフォルトでは、画像のサイズを維持するために、必要に応じてフレームが削除されます。削除されるフレームの数を最小限に抑えるには、falsefavorArea パラメータで渡します。ただし、これによって画像のサイズは小さくなります。

ネイティブモードを選択した場合は、指定した縦横比ができる限り維持されます。例えば、myCam.setMode(400, 400, 30) コマンドを実行し、そのカメラで利用できる最大の幅と高さが 320 および 288 である場合は、幅と高さがともに 288 に設定されます。幅と高さを同じ値に設定することで、要求された 1:1 の縦横比が維持されます。

要求した値に最も近いモードが選択された後に、これらのプロパティに割り当てられた値を調べるには、widthheight および fps の各プロパティを使用します。

Flash Media Server を使用する場合は、単一のフレームのキャプチャまたはコマ撮り写真の作成もできます。詳細については、NetStream.attachCamera()を参照してください。

パラメータ

width:int — 要求されたキャプチャの幅 (ピクセル単位) です。デフォルト値は 160 です。
 
height:int — 要求されたキャプチャの高さ (ピクセル単位) です。デフォルト値は 120 です。
 
fps:Number — 要求されたデータキャプチャレート (1 秒あたりのフレーム数) です。デフォルト値は 15 です。
 
favorArea:Boolean (default = true) — 指定要件に合うネイティブモードがカメラにない場合に、幅、高さ、フレームレートをどのように操作するかを指定します。デフォルト値は true で、キャプチャサイズを維持することを示します。このパラメータを使用すると、width 値と height 値に最も近いモードが選択されます。ただし、これによりフレームレートが低下し、パフォーマンスに悪影響を及ぼすことがあります。カメラの高さと幅よりも最大フレームレートを優先するには、falsefavorArea パラメータに指定します。

関連項目




次の例では、ユーザーがステージをクリックするとビデオのサイズが変更され、キャプチャレート(1 秒あたりのフレーム数)が新しい値に設定されます。

ステージは拡大 / 縮小されないように設定されます。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 つのメソッドは大きく異なります。

パラメータ

motionLevel:intactivity イベントを送出するために必要なモーションの量を指定します。使用可能な値の範囲は 0 ~ 100 です。デフォルト値は 50 です。
 
timeout:int (default = 2000) — アクティビティがない場合に、アクティビティが停止したと判定して activity イベントを送出するまでの経過時間をミリ秒単位で指定します。デフォルト値は 2000 ミリ秒 (2 秒) です。

関連項目




次の例では、ユーザーのカメラをモニタまたは監視カメラとして使用します。カメラがモーションを検知すると、テキストフィールドにアクティビティレベルが表示されます。この例を拡張して、アラームを鳴らしたり、Web サービスを通じて他のアプリケーションにメッセージを送信したりすることも可能です。

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:int — 現在の送信ビデオフィードで使用できる最大帯域幅 (1 秒あたりのバイト数) を指定します。quality の値を維持するために必要な帯域幅を Flash Player のビデオが使用できるように指定するには、bandwidth で 0 を渡します。デフォルト値は 16384 です。
 
quality:int — 必要な画質レベルを指定する整数です。各ビデオフレームに適用される圧縮率によって決まります。指定できる値は 1 (最低品質、最大圧縮率) から 100 (最高品質、圧縮なし) までです。帯域幅を超過するのを避けるために必要に応じて画質を変更するには、quality に 0 を指定します。

関連項目

イベントの詳細
activity イベント
イベントオブジェクトの型: flash.events.ActivityEvent
プロパティ ActivityEvent.type = flash.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 です。
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetCamera オブジェクトや Microphone オブジェクトなど、セッションを開始または終了しているオブジェクトです。
status イベント  
イベントオブジェクトの型: flash.events.StatusEvent
プロパティ StatusEvent.type = flash.events.StatusEvent.STATUS

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

カメラがそのステータスをレポートしたときに送出されます。code プロパティの値が "Camera.Muted" である場合、SWF ファイルのカメラへのアクセス許可を拒否したことになります。code プロパティの値が "Camera.Unmuted" である場合、SWF ファイルのカメラへのアクセスを許可したことになります。

type プロパティ (status イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
codeオブジェクトのステータスの説明です。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
level"status""warning""error" など、メッセージのカテゴリです。
targetそのステータスをレポートするオブジェクトです。

関連項目

例の使用法
CameraExample.as

次の例では、セキュリティ警告を承認した後のカメラからのイメージを示しています。ステージは拡大 / 縮小されないように設定され、Flash Player のウィンドウの左上に揃えられます。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