flash.media
public final class Camera
继承Camera Inheritance EventDispatcher Inheritance Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

Camera 类主要与 Flash Media Server 一起使用,但也可以在没有该服务器的情况下使用,只是在使用方式上会受到限制。

使用 Camera 类可以通过连接到运行 Adobe Flash Player 的计算机的视频摄像头捕获视频,例如监视来自连接到本地系统的 Web 摄像头的视频输入信号。 (Flash 提供类似的音频功能;有关详细信息,请参见 Microphone 类条目。)

警告:如果 SWF 文件尝试访问由 getCamera() 方法返回的摄像头,则 Flash Player 会显示一个对话框,用户可以通过该对话框允许或拒绝对摄像头的访问。 (对于 Camera 类的示例,请确保应用程序窗口大小至少为 215 x 138 像素;这是 Flash 显示该对话框所需的最小大小。) 最终用户和管理用户还可以基于各个站点或全局禁用摄像头访问。

若要创建或引用 Camera 对象,请使用 getCamera() 方法。

查看示例

另请参见

flash.media.Microphone
视频基础知识



公共 属性
 属性定义方
  activityLevel : Number
[read-only] 一个数值,指定摄像头检测的运动量。
Camera
  bandwidth : int
[read-only] 一个整数,指定当前输出视频输入信号可以使用的最大带宽,以字节为单位。
Camera
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  currentFPS : Number
[read-only] 摄像头捕获数据的速率,以每秒帧数为单位。
Camera
  fps : Number
[read-only] 希望摄像头在捕获数据时达到的最大速率,以每秒帧数为单位。
Camera
  height : int
[read-only] 当前捕获高度,以像素为单位。
Camera
  index : int
[read-only] 从零开始的整数,指定由 names 属性返回的数组中所反映的摄像头的索引。
Camera
  keyFrameInterval : int
[read-only] 指定进行完整传输而不由视频压缩算法进行插值处理的视频帧(称为关键帧)。
Camera
  loopback : Boolean
[read-only] 指定在本地查看摄像头所捕获图像时是进行压缩和解压缩 (true) 以便使用 Flash Media Server 进行实时传输,还是不进行压缩 (false)。
Camera
  motionLevel : int
[read-only] 一个数值,指定调用 activity 事件所需的运动量。
Camera
  motionTimeout : int
[read-only] 摄像头停止检测运动的时间与调用 activity 事件的时间之间相差的毫秒数。
Camera
  muted : Boolean
[read-only] 一个布尔值,指定用户在 Flash Player 的“隐私”面板中是拒绝了对摄像头的访问 (true) 还是允许访问 (false)。
Camera
  name : String
[read-only] 一个字符串,指定由摄像头硬件返回的当前摄像头的名称。
Camera
  names : Array
[static] [read-only] 检索一个反映所有可用摄像头的名称的字符串数组,而不显示 Flash Player 的“隐私”面板。
Camera
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
  quality : int
[read-only] 一个整数,指定所需的画面质量级别,该级别由应用于每一视频帧的压缩量来确定。
Camera
  width : int
[read-only] 当前捕获宽度,以像素为单位。
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
[static] 返回对用于捕获视频的 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
设置每秒的最大带宽或当前输出视频输入信号所需的画面质量。
Camera
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件摘要定义方
 Inherited Flash Player 获得操作系统焦点并变为活动状态时调度。EventDispatcher
   在摄像头开始或结束会话时调度。Camera
 Inherited Flash Player 失去操作系统焦点并变为非活动状态时调度。EventDispatcher
   在摄像头报告其状态时调度。Camera
属性详细信息
activityLevel属性
activityLevel:Number  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个数值,指定摄像头检测的运动量。 该数值的范围为 0(检测到没有运动)到 100(检测到大运动量)。 该属性的值可帮助确定是否需要将设置传递到 setMotionLevel() 方法。

如果摄像头可用,但由于未调用 Video.attachCamera() 方法而尚未被使用,则将此属性设置为 -1。

如果只对未压缩的本地视频进行流式处理,则只有在为事件处理函数分配函数后才能设置此属性。 否则,它为未定义。


实现
    public function get activityLevel():Number

另请参见

bandwidth属性 
bandwidth:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个整数,指定当前输出视频输入信号可以使用的最大带宽,以字节为单位。 值 0 意味着 Flash 视频可以使用所需数量的带宽来保持指定的帧品质。

若要设置此属性,请使用 setQuality() 方法。


实现
    public function get bandwidth():int

另请参见

currentFPS属性 
currentFPS:Number  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

摄像头捕获数据的速率,以每秒帧数为单位。 无法设置此属性;不过,可以使用 setMode() 方法来设置相关属性 fps,该属性指定摄像头捕获数据时希望使用的最大帧频。


实现
    public function get currentFPS():Number

另请参见

fps属性 
fps:Number  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

希望摄像头在捕获数据时达到的最大速率,以每秒帧数为单位。 可能的最大帧频取决于摄像头的性能;即,如果摄像头不支持您在此处设置的值,则不会达到此帧频。


实现
    public function get fps():Number

另请参见

height属性 
height:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

当前捕获高度,以像素为单位。 若要设置此属性的值,请使用 setMode() 方法。


实现
    public function get height():int

另请参见

index属性 
index:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

从零开始的整数,指定由 names 属性返回的数组中所反映的摄像头的索引。


实现
    public function get index():int

另请参见

keyFrameInterval属性 
keyFrameInterval:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定进行完整传输而不由视频压缩算法进行插值处理的视频帧(称为关键帧)。 默认值为 15,指每隔 14 个帧后的那一帧为关键帧。


实现
    public function get keyFrameInterval():int
loopback属性 
loopback:Boolean  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定在本地查看摄像头所捕获图像时是进行压缩和解压缩 (true) 以便使用 Flash Media Server 进行实时传输,还是不进行压缩 (false)。 默认值为 false

若要设置此值,请使用 Camera.setLoopback()。 若要设置此属性为 True 时使用的压缩量,请使用 Camera.setQuality()


实现
    public function get loopback():Boolean

另请参见

motionLevel属性 
motionLevel:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个数值,指定调用 activity 事件所需的运动量。 可接受值的范围为 0 到 100。 默认值为 50。

不论 motionLevel 属性为何值都能显示视频。 有关详细信息,请参阅 setMotionLevel()


实现
    public function get motionLevel():int

另请参见

motionTimeout属性 
motionTimeout:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

摄像头停止检测运动的时刻和调用 activity 事件的时刻之间相差的毫秒数。 默认值为 2000(2 秒)。

若要设置此值,请使用 setMotionLevel()


实现
    public function get motionTimeout():int

另请参见

muted属性 
muted:Boolean  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

布尔值,指定用户在 Flash Player 的“隐私”面板中是拒绝了对摄像头的访问 (true) 还是允许访问 (false)。 当此值变化时,将调度 status 事件。


实现
    public function get muted():Boolean

另请参见

name属性 
name:String  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个字符串,指定由摄像头硬件返回的当前摄像头的名称。


实现
    public function get name():String

另请参见

names属性 
names:Array  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

检索一个反映所有可用摄像头的名称的字符串数组,而不显示 Flash Player 的“隐私”面板。 此数组的行为方式与其它任何 ActionScript 数组的行为方式相同,隐式提供每一摄像头从零开始的索引以及系统上摄像头的数目(通过 names.length)。 有关详细信息,请参阅 names Array 类条目。

调用 names 属性要求全面检查硬件,并可能需要几秒钟时间才能生成数组。 在大多数情况下,您只能使用默认的摄像头。


实现
    public static function get names():Array

另请参见

quality属性 
quality:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个整数,指定所需的画面质量级别,该级别由应用于每一视频帧的压缩量来确定。 可接受的品质值范围为 1(最低品质,最大压缩)到 100(最高品质,无压缩)。 默认值为 0,这意味着画面质量可以根据需要进行变化,以避免超出可用带宽。

若要设置此属性,请使用 setQuality() 方法。


实现
    public function get quality():int

另请参见

width属性 
width:int  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

当前捕获宽度,以像素为单位。 若要为该属性设置所需值,请使用 setMode() 方法。


实现
    public function get width():int

另请参见

方法详细信息
getCamera()方法
public static function getCamera(name:String = null):Camera

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

返回对用于捕获视频的 Camera 对象的引用。 若要实际开始捕获视频,必须将 Camera 对象附加到 Video 对象(请参阅 Video.attachVideo() )。

getCamera() 方法的多次调用会引用同一个摄像头。 因此,如果代码包含诸如 firstCam:Camera = getCamera()secondCam:Camera = getCamera() 之类的代码,则 firstCamsecondCam 会引用同一个摄像头,该摄像头为用户的默认摄像头。

通常不应为 name 参数传递值,而只是使用 getCamera() 来返回对默认摄像头的引用。 通过“摄像头设置”面板(将在本节的后面进行讨论),用户可以指定 Flash 应使用的默认摄像头。

当 SWF 文件尝试访问由 getCamera() 返回的摄像头时,Flash Player 会显示一个对话框,用户可从中选择是允许还是拒绝对摄像头的访问。 (请确保应用程序窗口大小至少为 215 x 138 像素;这是 Flash 显示该对话框所需的最小大小。) 当用户对此对话框做出响应时,Flash Player 将在指示用户响应的 status 事件中返回信息对象:Camera.muted 表示用户拒绝访问摄像头;Camera.unmuted 表示用户允许访问摄像头。 若要在不处理 status 事件的情况下确定用户是拒绝还是允许访问摄像头,请使用 muted 属性。

用户也可以为特定域指定永久隐私设置,方法是在 SWF 文件播放过程中右键单击(在 Windows 中)或按住 Control 键并单击(在 Macintosh 中),选择“设置”,打开“隐私”面板,然后选择“记住”。

无法使用 ActionScript 为用户设置 Allow 或 Deny 值,但可以通过调用 Security.showSettings(SecurityPanel.PRIVACY) 为用户显示“隐私”面板。 如果用户选择“记住”,Flash Player 将不再询问用户是允许还是拒绝此域的 SWF 文件访问摄像头。

如果 getCamera() 返回 null,则表明摄像头正由另一个应用程序使用,或者系统上没有安装摄像头。 若要确定是否安装了任何摄像头,请使用 names.length 属性。 若要显示 Flash Player 的“摄像头设置”面板(让用户选择将由 getCamera() 引用的摄像头),请使用 System.showSettings(SecurityPanel.CAMERA)

扫描硬件以找到摄像头需要花一些时间。 在 Flash 找到至少一个摄像头后,在该播放器实例的生存期内不再扫描硬件。 但是,如果 Flash 没有找到任何摄像头,则它在每次调用 getCamera 时都会进行扫描。 这在用户忘记连接摄像头时非常有用;如果 SWF 文件提供了调用 getCamera 的“重试”按钮,则用户不必重新启动该 SWF 文件,Flash 即可找到摄像头。

参数

name:String (default = null) — 指定要获取哪一个摄像头,这由 names 属性返回的数组确定。 对于大多数应用程序,可省略此参数来获取默认摄像头。

返回
Camera — 如果未指定 name 参数,则此方法返回对默认摄像头的引用;或者,如果默认摄像头正由另一个应用程序使用,则此方法返回对第一个可用摄像头的引用。 (如果安装了多个摄像头,则用户可以在 Flash Player 的“摄像头设置”面板中指定默认的摄像头。) 如果没有可用摄像头或没有安装摄像头,则该方法返回 null

事件
status:StatusEvent — 在摄像头报告其状态时调度。 如果 code 属性的值为 "Camera.muted",则表示用户拒绝 SWF 文件访问他的摄像头。 如果 code 属性的值为 "Camera.unmuted",则表示用户允许 SWF 文件访问他的摄像头。

另请参见

setKeyFrameInterval()方法 
public function setKeyFrameInterval(keyFrameInterval:int):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定进行完整传输而不由视频压缩算法进行插值处理的视频帧(称为关键帧)。 此方法通常只在使用 Flash Media Server 传输视频时适用。

Flash 视频压缩算法通过只传输自视频的上一帧以来的更改内容来压缩视频;这些部分被视为插补帧。 可以根据前一帧的内容插补视频帧。 但是,关键帧是完整的视频帧;它并不是根据前面的帧插补的。

若要确定如何设置 keyFrameInterval 参数的值,请考虑带宽使用率和视频回放辅助功能。 例如,为 keyFrameInterval 指定较高的值(以较低的频率发送关键帧)可降低带宽使用率。 但是,这可能会增加在视频某一特定点上定位播放头所需的时间量;可能需要插补更多以前的视频帧才能继续播放视频。

反之,为 keyFrameInterval 指定较低的值(以较高的频率发送关键帧)会提高带宽使用率(因为会更频繁地传输所有的视频帧),但可能会减少在已录制视频内搜索特定视频帧所需的时间量。

参数

keyFrameInterval:int — 一个值,用于指定将哪些视频帧(作为关键帧)进行完整传输而不由视频压缩算法进行插补处理。 值 1 表示每一帧都是关键帧,值 3 表示每隔两个帧后的那一帧为关键帧,依此类推。 可接受值为 1 至 48。

另请参见

setLoopback()方法 
public function setLoopback(compress:Boolean = false):void

语言版本 : ActionScript 3.0
Player 版本 : 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
Player 版本 : Flash Player 9

将摄像头的捕获模式设置为最符合指定要求的本机模式。 如果摄像头不具有与您传递的所有参数相匹配的本机模式,则 Flash 选择最接近于请求模式的合成的捕获模式。 此操作可能涉及裁切图像和删除帧。

默认情况下,Flash 根据需要删除帧,以保持图像大小。 若要将删除的帧的数目降至最低(即使这样做意味着减小图像的大小),请将 false 传递给 favorArea 参数。

在选择本机模式时,Flash 尝试尽可能保持所请求的高宽比。 例如,如果发出 myCam.setMode(400, 400, 30) 命令,并且摄像头上可用的最大宽度和高度值分别为 320 和 288,则 Flash 将宽度和高度都设置为 288;通过将这些属性设置为相同的值,Flash 可以保持所请求的 1:1 的高宽比。

若要确定 Flash 在选择与所请求的值最匹配的模式后分配给这些属性的值,请使用 widthheightfps 属性。

参数

width:int — 请求的捕获宽度,以像素为单位。 默认值为 160。
 
height:int — 请求的捕获高度,以像素为单位。 默认值为 120。
 
fps:Number — 摄像头捕获数据应使用的请求速率,以每秒帧数为单位。 默认值为 15。
 
favorArea:Boolean (default = true) — 指定在摄像头不具有满足指定要求的本机模式的情况下是否控制宽度、高度和帧频。 默认值为 true,这意味着支持保持捕获大小;使用此参数选择与 widthheight 值最匹配的模式,即使这样做会由于降低帧频而对性能造成不利影响。 若要最大限度地提高帧频,而不考虑摄像头的高度和宽度,请将 false 传递给 favorArea 参数。

另请参见

setMotionLevel()方法 
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定调度 activity 事件所需的运动量。 或者,设置多长时间(毫秒)没有活动,Flash 才会认为动作已停止并调度该事件。

注意:不管 motionLevel 参数值是什么,都可以显示视频。 此参数只确定在何时以及哪些情况下调度事件,并不确定实际上是在捕获视频还是显示视频。

此方法和 Microphone.setSilenceLevel() 方法在目的上类似;这两种方法都用于指定应该在何时调度 activity 事件。 不过,这两种方法在对发布流的影响上具有显著的差异:

参数

motionLevel:int — 指定调度 activity 事件所需的运动量。 可接受值的范围为 0 到 100。 默认值为 50。
 
timeout:int (default = 2000) — 指定在没有活动的情况下经过的毫秒数,必须经过这么长的时间,Flash 才会认为活动已停止并调度 activity 事件。 默认值为 2000 毫秒(2 秒)。

另请参见

setQuality()方法 
public function setQuality(bandwidth:int, quality:int):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

设置每秒的最大带宽或当前输出视频输入信号所需的画面质量。 此方法通常只在使用 Flash Media Server 传输视频时适用。

使用此方法可以指定输出视频输入信号的哪一方面对于您的应用程序更重要:是带宽使用率还是图片品质。

参数

bandwidth:int — 指定当前输出视频输入信号可以使用的最大带宽,以每秒字节数为单位。 若要指定 Flash 视频可以使用所需的任何数量的带宽来保持 quality 的值,则将 0 传递给 bandwidth。 默认值为 16384。
 
quality:int — 一个整数,指定所需的画面质量级别,该级别由应用于每一视频帧的压缩量确定。 可接受的值的范围为 1(最低品质,最大压缩)到 100(最高品质,无压缩)。 若要指定画面质量可以根据需要进行变化以避免超出带宽,请将 0 传递给 quality

另请参见

事件详细信息
activity 事件
事件对象类型: flash.events.ActivityEvent
ActivityEvent.type property = flash.events.ActivityEvent.ACTIVITY

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在摄像头开始或结束会话时调度。

ActivityEvent.ACTIVITY 常数定义 activity 事件对象的 type 属性值。

此事件具有以下属性:

属性
activating如果设备已激活则为 true,如果被取消激活则为 false
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target开始或结束会话的对象,如 Camera 或 Microphone 对象。
status 事件  
事件对象类型: flash.events.StatusEvent
StatusEvent.type property = flash.events.StatusEvent.STATUS

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在摄像头报告其状态时调度。 若 code 属性的值为 "Camera.muted",则表示用户拒绝 SWF 文件访问他的摄像头。 若 code 属性的值为 "Camera.unmuted",则表示用户允许 SWF 文件访问他的摄像头。

定义 status 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
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/flash/9.0_cn/ActionScriptLangRefV3/flash/media/Camera.html