flash.media
public class Video
继承Video Inheritance DisplayObject Inheritance EventDispatcher Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

Video 类在应用程序中显示实时视频或录制视频,而无需在 SWF 文件中嵌入视频。 此类在用于播放以下视频类型的 Adobe Flash 或 Adobe Flex 界面中创建一个 Video 对象:存储在服务器或本地的 FLV 录制文件,或者从用户计算机中捕获的实时视频。Video 对象是应用程序的显示列表中的一个显示对象,它表示在用户界面中运行视频的可见空间。

将 Video 对象用于 Flash Media Server 时,可通过该对象将实时视频从用户计算机发送到服务器,然后从服务器向其他用户广播此视频。通过使用这些功能,您可以开发媒体应用程序,例如,简单的视频播放器、具有在服务器间进行多点发布功能的视频播放器或者用于用户社区的视频共享应用程序。

Flash Player 9 支持发布和回放使用 Sorenson Spark 或 On2 VP6 编解码器编码的 FLV 文件,并且还支持 Alpha 通道。与以前的技术相比,On2 VP6 视频编解码器使用的带宽较少,并且提供了额外的马赛克消除滤镜和色度去环滤镜。有关视频回放的详细信息,请参阅 flash.net.NetStream 类。

Flash Player 9.0.115.0 及更高版本支持 mipmap 以优化运行时呈现品质和性能。对于视频回放,如果将 Video 对象的 smoothing 属性设置为 true,则 Flash Player 使用 mipmap 优化。

与显示列表中的其它显示对象一样,您可以控制 Video 对象的各种属性。例如,可以通过使用 Video 对象的 xy 属性在舞台上移动该对象,以及通过使用其 heightwidth 属性更改其大小,等等。

若要播放视频流,请使用 attachCamera()attachNetStream() 将视频附加到 Video 对象。然后,使用 addChild() 将 Video 对象添加到显示列表中。

注意:Video 类不是 InteractiveObject 类的子类,因此它无法调度鼠标事件。 但是,您可以对包含 Video 对象的显示对象容器调用 addEventListener() 方法。

查看示例

另请参见

attachCamera()
attachNetStream()
flash.media.Camera.getCamera()
flash.net.NetConnection
flash.net.NetStream
flash.display.DisplayObjectContainer.addChild()
flash.display.Stage.addChild()
Core display classes
Taking advantage of mipmapping
Basics of video


公共属性
 属性定义方
 InheritedaccessibilityProperties : AccessibilityProperties
此显示对象的当前辅助功能选项。
DisplayObject
 Inheritedalpha : Number
指示指定对象的 Alpha 透明度值。
DisplayObject
 InheritedblendMode : String
BlendMode 类中的一个值,用于指定要使用的混合模式。
DisplayObject
 InheritedblendShader : Shader
[只写] 设置用于混合前景和背景的着色器。
DisplayObject
 InheritedcacheAsBitmap : Boolean
如果设置为 true,则 Flash Player 或 Adobe AIR 将缓存显示对象的内部位图表示形式。
DisplayObject
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  deblocking : int
指示作为后处理的一部分应用于已解码视频的滤镜的类型。
Video
 Inheritedfilters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。
DisplayObject
 Inheritedheight : Number
指示显示对象的高度,以像素为单位。
DisplayObject
 InheritedloaderInfo : LoaderInfo
[只读 (read-only)] 返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。
DisplayObject
 Inheritedmask : DisplayObject
调用显示对象被指定的 mask 对象遮罩。
DisplayObject
 InheritedmouseX : Number
[只读 (read-only)] 指示鼠标位置的 x 坐标,以像素为单位。
DisplayObject
 InheritedmouseY : Number
[只读 (read-only)] 指示鼠标位置的 y 坐标,以像素为单位。
DisplayObject
 Inheritedname : String
指示 DisplayObject 的实例名称。
DisplayObject
 InheritedopaqueBackground : Object
指定显示对象是否由于具有某种背景颜色而不透明。
DisplayObject
 Inheritedparent : DisplayObjectContainer
[只读 (read-only)] 指示包含此显示对象的 DisplayObjectContainer 对象。
DisplayObject
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
 Inheritedroot : DisplayObject
[只读 (read-only)] 对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。
DisplayObject
 Inheritedrotation : Number
指示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。
DisplayObject
 InheritedrotationX : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。
DisplayObject
 InheritedrotationY : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。
DisplayObject
 InheritedrotationZ : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。
DisplayObject
 Inheritedscale9Grid : Rectangle
当前有效的缩放网格。
DisplayObject
 InheritedscaleX : Number
指示从注册点开始应用的对象的水平缩放比例(百分比)。
DisplayObject
 InheritedscaleY : Number
指示从对象注册点开始应用的对象的垂直缩放比例(百分比)。
DisplayObject
 InheritedscaleZ : Number
指示从对象的注册点开始应用的对象的深度缩放比例(百分比)。
DisplayObject
 InheritedscrollRect : Rectangle
显示对象的滚动矩形范围。
DisplayObject
  smoothing : Boolean
指定在缩放视频时是否应进行平滑处理(插补数据)。
Video
 Inheritedstage : Stage
[只读 (read-only)] 显示对象的舞台。
DisplayObject
 Inheritedtransform : Transform
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。
DisplayObject
  videoHeight : int
[只读 (read-only)] 一个整数,以像素为单位指定视频流的高度。
Video
  videoWidth : int
[只读 (read-only)] 一个整数,以像素为单位指定视频流的宽度。
Video
 Inheritedvisible : Boolean
显示对象是否可见。
DisplayObject
 Inheritedwidth : Number
指示显示对象的宽度,以像素为单位。
DisplayObject
 Inheritedx : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。
DisplayObject
 Inheritedy : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。
DisplayObject
 Inheritedz : Number
指示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。
DisplayObject
公共方法
 方法定义方
  
Video(width:int = 320, height:int = 240)
创建新的 Video 实例。
Video
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
指定要在应用程序中 Video 对象的边界内显示的来自摄像头的视频流。
Video
  
指定要在应用程序中 Video 对象的边界内显示的视频流。
Video
  
清除 Video 对象(而非视频流)中当前显示的图像。
Video
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。
DisplayObject
 Inherited
getRect(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。
DisplayObject
 Inherited
将 point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。
DisplayObject
 Inherited
将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。
DisplayObject
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
计算显示对象,以确定它是否与 obj 显示对象重叠或相交。
DisplayObject
 Inherited
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。
DisplayObject
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。
DisplayObject
 Inherited
将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。
DisplayObject
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited将显示对象添加到显示列表中时调度。DisplayObject
 Inherited在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。DisplayObject
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
 Inherited[播放事件] 播放头进入新帧时调度。DisplayObject
 Inherited[广播事件] 播放头退出当前帧时调度。DisplayObject
 Inherited[广播事件] 在帧显示对象的构造函数运行之后但在帧脚本运行之前调度。DisplayObject
 Inherited将要从显示列表中删除显示对象时调度。DisplayObject
 Inherited在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。DisplayObject
 Inherited[广播事件] 将要更新和呈现显示列表时调度。DisplayObject
属性详细信息
deblocking属性
deblocking:int  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示作为后处理的一部分应用于已解码视频的滤镜的类型。默认值为 0,指示允许视频压缩程序根据需要应用消除马赛克的滤镜。

压缩视频可能会导致产生不希望有的伪像。可以使用 deblocking 属性设置用于减少马赛克(而对于使用 On2 编解码器压缩的视频,则用于降低扭曲边缘)的过滤器。

马赛克是指组成每个视频帧的块的边界之间的可见瑕疵。扭曲边缘是指视频图像内元素周围的扭曲边缘。

有两种消除马赛克的滤镜:分别在 Sorenson 编解码器和 On2 VP6 编解码器中。此外,如果使用 On2 VP6 编解码器,则可以使用色度去环滤镜。若要设置滤镜,请使用下列值之一:

如果在使用 Sorenson 编解码器时为视频选择了大于 2 的值,则 Sorenson 解码器默认为 2。

使用消除马赛克的滤镜会影响整体回放性能,而且对于高带宽视频通常没有必要。如果用户系统的功能不够强大,则用户在启用消除马赛克的滤镜的情况下回放视频可能会有困难。



实现
    public function get deblocking():int
    public function set deblocking(value:int):void
smoothing属性 
smoothing:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指定在缩放视频时是否应进行平滑处理(插补数据)。播放器必须处于高品质模式,平滑处理才起作用。默认值是 false(不进行平滑处理)。

对于使用 Flash Player 9.0.115.0 及更高版本进行的视频回放,请将此属性设置为 true 以利用 mipmap 图像优化。



实现
    public function get smoothing():Boolean
    public function set smoothing(value:Boolean):void

另请参见

videoHeight属性 
videoHeight:int  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

一个整数,以像素为单位指定视频流的高度。对于实时流,此值与正在捕获该视频流的 Camera 对象的 Camera.height 属性相同。对于 FLV 文件,此值是以 FLV 形式导出的文件的高度。

例如,您可能需要使用此属性来确保用户以捕获时的相同大小观看视频,而无论 Video 对象在舞台上的实际大小是什么。



实现
    public function get videoHeight():int

另请参见

videoWidth属性 
videoWidth:int  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

一个整数,以像素为单位指定视频流的宽度。对于实时流,此值与正在捕获该视频流的 Camera 对象的 Camera.width 属性相同。对于 FLV 文件,此值是以 FLV 文件形式导出的文件的宽度。

例如,您可能需要使用此属性来确保用户以捕获时的相同大小观看视频,而无论 Video 对象在舞台上的实际大小是什么。



实现
    public function get videoWidth():int

另请参见

构造函数详细信息
Video()构造函数
public function Video(width:int = 320, height:int = 240)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建新的 Video 实例。如果没有提供 widthheight 参数的值,将使用默认值。在初始构建后,也可以使用 Video.widthVideo.height 设置 Video 对象的宽度和高度属性。在创建新的 Video 对象时,不允许宽度和高度的值为零;如果传递零,则将应用默认值。

创建 Video 后,请调用 DisplayObjectContainer.addChild()DisplayObjectContainer.addChildAt() 方法以便将 Video 对象添加到父级 DisplayObjectContainer 对象。

参数
width:int (default = 320) — 视频的宽度(以像素为单位)。
 
height:int (default = 240) — 视频的高度,以像素为单位。
方法详细信息
attachCamera()方法
public function attachCamera(camera:Camera):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指定要在应用程序中 Video 对象的边界内显示的来自摄像头的视频流。

可以使用此方法将实时视频从用户计算机附加到 Video 对象。您可以在捕获实时视频的同一台计算机上本地播放该视频,也可以将其发送到 Flash Media Server,然后使用该服务器将视频流式传输到其他用户。

参数

camera:Camera — 正在捕获视频数据的 Camera 对象。若要切断与该 Video 对象的连接,请传递 null

另请参见


示例
如何使用示例
有关如何使用此方法的说明,请参阅 Camera.getCamera() 方法示例。
attachNetStream()方法 
public function attachNetStream(netStream:NetStream):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指定在应用程序中 Video 对象的边界内显示视频流。视频流是使用 NetStream.play() 播放的 FLV 文件(即 Camera 对象)或 null。如果使用 FLV 文件,则可以将其存储在本地文件系统或 Flash Media Server 中。如果 netStream 参数的值为 null,则不会再在 Video 对象中播放视频。

如果 FLV 文件只包含音频,则无需使用此方法;当调用 NetStream.play() 时,将自动播放 FLV 文件的音频部分。若要控制与 FLV 文件相关联的音频,请使用用于播放 FLV 文件的 NetStream 对象的 soundTransform 属性。

参数

netStream:NetStream — 一个 NetStream 对象。若要切断与该 Video 对象的连接,请传递 null

另请参见

clear()方法 
public function clear():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

清除 Video 对象(而非视频流)中当前显示的图像。此方法对于处理当前图像非常有用。例如,您可以清除最后一幅图像或显示待机信息,而无需隐藏 Video 对象。

另请参见

示例 如何使用示例
VideoExample.as

以下示例将 Video 对象与 NetConnection 和 NetStream 类一同使用,以加载和播放 FLV 文件。若要运行此示例,需要一个名称和位置与传递给 videoURL 的变量相匹配的 FLV 文件,在本例中,使用 SWF 文件所在目录下的一个名为 Video.flv 的 FLV 文件。

在本例中,创建 Video 和 NetStream 对象并调用 Video.attachNetStream()NetStream.play() 的代码放入处理函数。仅在试图连接 NetConnection 对象成功时调用处理函数,即,当 netStatus 事件返回一个 info 对象,该对象带有一个表示成功的 code 属性时,才调用该处理函数。建议先等待连接成功,然后再调用 NetStream.play()

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;

    public class VideoExample extends Sprite {
        private var videoURL:String = "Video.flv";
        private var connection:NetConnection;
        private var stream:NetStream;

        public function VideoExample() {
            connection = new NetConnection();
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            connection.connect(null);
        }

        private function netStatusHandler(event:NetStatusEvent):void {
            switch (event.info.code) {
                case "NetConnection.Connect.Success":
                    connectStream();
                    break;
                case "NetStream.Play.StreamNotFound":
                    trace("Unable to locate video: " + videoURL);
                    break;
            }
        }

        private function connectStream():void {
            stream = new NetStream(connection);
            stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
            var video:Video = new Video();
            video.attachNetStream(stream);
            stream.play(videoURL);
            addChild(video);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }
        
        private function asyncErrorHandler(event:AsyncErrorEvent):void {
            // ignore AsyncErrorEvent events.
        }
    }
 }