ActionScript 3.0 API 中的 Video 类

注:这个类在Flash流媒体开发中使用的很频繁,在此记录一下它的使用方法。
flash.media
public class Video
继承 VideoInheritanceDisplayObjectInheritanceEventDispatcherInheritanceObject
子类VideoPlayer

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



Video 类在应用程序中显示实时视频或录制视频,而无需在 SWF 文件中嵌入视频。此类创建播放下列任一类型视频的 Video 对象:在服务器上存储的或本地存储的录制的视频文件;用户捕获的实时视频。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 对象添加到显示列表中。

如果您使用的是 Flash Professional,则还可以将 Video 对象放在舞台上,而不是使用addChild()进行添加,如下所示:

  1. 如果看不到“库”面板,请选择“窗口”>“库”,让该面板显示出来。
  2. 单击“库”面板标题栏右侧的“选项”菜单,然后选择“新建视频”,在库中添加一个嵌入式 Video 对象。
  3. 在“视频属性”对话框中,命名嵌入的 Video 对象以便在库中使用,然后单击“确定”。
  4. 将该 Video 对象拖放到舞台上,然后使用属性检查器为其指定一个唯一的实例名称,如my_video。(不要将其命名为“Video”。)

在桌面上的 AIR 应用程序中,以全屏模式播放视频会禁用任何电源和屏幕节省功能(如果操作系统允许)。

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



公共属性
属性 由以下参数定义
deblocking:int
表示作为后处理的一部分应用于已解码视频的滤镜的类型。
Video
smoothing:Boolean
指定在缩放视频时是否应进行平滑处理(插补数据)。
Video
videoHeight:int
[只读] 一个整数,以像素为单位指定视频流的高度。
Video
videoWidth:int
[只读] 一个整数,以像素为单位指定视频流的宽度。
Video
公共方法
方法 由以下参数定义
Video(width: int= 320, height: int= 240)
创建新的 Video 实例。
Video
attachCamera(camera: Camera): void
指定要在应用程序中 Video 对象的边界内显示的来自摄像头的视频流。
Video
attachNetStream(netStream: NetStream): void
指定要在应用程序中 Video 对象的边界内显示的视频流。
Video
clear(): void
清除 Video 对象(而非视频流)中当前显示的图像。
Video
事件
属性详细信息

deblocking

属性
deblocking:int

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

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

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

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

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

  • 0 - 允许视频压缩程序根据需要应用消除马赛克的滤镜。
  • 1 - 不使用消除马赛克的滤镜。
  • 2 - 使用 Sorenson 消除马赛克的滤镜。
  • 3 -(只限 On2 视频)使用 On2 消除马赛克的滤镜,但不使用色度去环滤镜。
  • 4 -(只限 On2 视频)使用 On2 消除马赛克的滤镜和色度去环滤镜。
  • 5 - (只限 On2 视频)使用 On2 消除马赛克的滤镜和性能更高的 On2 色度去环滤镜。

如果在使用 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, Flash Lite 4

指定在缩放视频时是否应进行平滑处理(插补数据)。为顺畅工作,运行时必须处于高品质模式(默认值)。默认值是false(不进行平滑处理)。

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



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

了解详细信息

利用 mipmap 处理

videoHeight

属性
videoHeight:int[只读]

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

一个整数,以像素为单位指定视频流的高度。对于实时流,此值与正在捕获该视频流的 Camera 对象的Camera.height属性相同。对于录制的视频文件,此值为视频高度。对于录制的视频,当此值更改时,将会调度 NetStream.Video.DimensionChange 事件。

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



实现
public function get videoHeight():int

相关 API 元素

flash.media.Camera.height

videoWidth

属性
videoWidth:int[只读]

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

一个整数,以像素为单位指定视频流的宽度。对于实时流,此值与正在捕获该视频流的 Camera 对象的Camera.width属性相同。对于录制的视频文件,此值为视频宽度。对于录制的视频,当此值更改时,将会调度 NetStream.Video.DimensionChange 事件。

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



实现
public function get videoWidth():int

相关 API 元素

flash.media.Camera.width
构造函数详细信息

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)— 视频的高度,以像素为单位。

示例 (如何使用本示例)

以下示例显示如何加载外部 FLV 文件:
var MyVideo:Video = new Video();
addChild(MyVideo);
 
var MyNC:NetConnection = new NetConnection();
MyNC.connect(null);
 
var MyNS:NetStream = new NetStream(MyNC);
MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv");

MyVideo.attachNetStream(MyNS);

//the clouds.flv video has metadata we're not using, so create
//an error handler to ignore the message generated by the runtime
//about the metadata
MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 

function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
   //ignore metadata error message
} 
方法详细信息

attachCamera

() 方法
public function attachCamera(camera:Camera):void

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

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

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

注意:在 iOS AIR 应用程序中,当应用程序使用 GPU 呈现模式时,不能显示摄像头视频。

参数

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

相关 API 元素

Video.attachNetStream()
flash.media.Camera

示例
如何使用本示例
有关如何使用此方法的说明,请参阅 Camera.getCamera()方法示例。

attachNetStream

() 方法
public function attachNetStream(netStream:NetStream):void

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

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

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

参数

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

相关 API 元素

Video.attachCamera()
flash.net.NetStream.soundTransform
flash.net.NetStream.play()
SoundTransform

clear

() 方法
public function clear():void

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

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

相关 API 元素

Video.attachCamera()
示例 如何使用本示例
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.
        }
    }
 }

本压缩包包括: 《ActionScript 3.0 语言和组件参考.chm 《Flex 3 RIA开发详解与精深实践》PDF及 配套代码 (1)《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 、方法和属性。 在可能的情况下,特定于 AIR 的新项目都以其名称旁的这个小图标作为标志: 本手册提供了 ActionScript 语言所支持元素的语法和用法信息。 其包括以下部分: 下面的 《ActionScript 3.0 语言和组件参考》是 Flash® Player 和 Adobe® AIR™ 应用程序编程接口 (API) 的参考手册。 语言元素,如全局变量、运算符、语句、关键字、指令和特殊型包 按字母顺序排列的元素条目 具有所有条目的索引 附录,比较 ActionScript 2.0 与 ActionScript 3.0 的某些关键语言和 API 的改动 有关错误和警告的附录(带注释)具有关使用 XML 支持补间动画和 FLVPlayback 字幕的参考信息的附录。 具有关对 Adobe AIR 使用数据库的参考信息的附录 (2)《Flex 3 RIA开发详解与精深实践》一书3位作者杨占坡,杨铭,翁颖做客AIRIA论坛,与技术爱好者在线交流。并配合AIRIA论坛开展活动在线送书、读书、交流尽在AIRIA论坛 别名: 企业级Web应用与AIR桌面应用 作者: 杨占坡&杨铭&翁颖 资源格式: PDF 版本: 文字版 出版社: 清华大学出版社书号: ISBN 9787302188827发行时间: 2009年01月01日 地区: 大陆 语言: 简体文 简介: 内容介绍: Flex是目前最为普及的一种RIA开发技术,依托于脱胎换骨的ActionScript 3.0,可以轻松实现相比传统的网络应用更加卓越的交互能力和更加绚丽的表现效果。Flex技术本身并不是凭空出现的,经过了Flash的长期预热,依托于XML、ActionScript 3.0等标准化开发语言,终成正果。 本书以实践为手段,以实用为核心,全面解析了应用Flex技术进行RIA开发的思维与过程。从实践开始、到实践结束。从最简单的Hello World演示到完整的项目全案开发,给读者全新的学习过程。 内容分为四部分:开启Flex之门、Flex开发进阶、Flex 3 Web项目全案开发、Flex 3 AIR桌面项目全案开发。涉及了Flex基础概念、组件设计开发、图表开发、企业级应用以及AIR桌面应用等方面。 本书最大的特点是使用大量小巧的示例帮助读者快速体验Flex开发流程。并在最后两大部分结合完整的项目开发案例,给读者以积少成多、从量变到质变的软件开发学习过程之体验。 本书作者是国内第一个企业级Flex上线项目的负责人,资深软件工程师,并多年从事Flash/Flex RIA开发,具有货真价实的Flex功力。 本书所附光盘,提供作者精心整理的代码、项目文件,并包含国内首次提供的Flex项目开发操作视频。 读者对象:Web开发人员、软件工程师、Flash设计师、网页设计师、软件专业相关师生等。 作者介绍: 杨占坡 主编 资深软件工程师、软件架构师、北京航空航天大学软件工程硕士,精于企业级软件开发和嵌入式系统开发。对C语言、Java语言/JavaEE系统、Ruby on Rails、Flex、Ajax等领域都有深入的研究:国内第一个Flex企业级上线项目核心开发者,属于国内最早一批应用Flex进行企业级开发的软件工程师;国内第一批Ruly on Rails架构的倡导者;拥有企业级分布式架构设计的国家级发明专利。在软件设计方法、软件开发技术方面都具有深刻认识和独到见解。 目录: PART 1 开启Flex之门 第1章 Flex 3程序设计基础 第2章 Flex可视化组件开发 PART 2 Flex开发进阶 第3章 Flex程序设计进阶 第4章 Flex模块化编程 第5章 ActionScript 3精要 第6章 Flex图表 PART 3 Flex 3 Web项目全案开发 第7章 Flex企业级开发实践—— Flex + Struts 第8章 Flex企业级开发实践—— Flex + Web Services PART 4 Flex 3 AIR桌面项目全案开发 第9章 桌面上的Web开发——AIR 第10章 Fl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值