| 包 | flash.net |
| Class | public class NetStream |
| 继承 | NetStream EventDispatcher Object |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
NetStream.publish() 发布流,也可以使用 NetStream.play() 订阅发布的流并接收数据。您可以发布或播放实时数据及先前录制的数据。您还可以使用 NetStream 对象向所有已订阅的客户端发送文本消息(请参阅 NetStream.send() 方法)。
与在 SWF 文件中嵌入视频相比,播放外部视频文件有很多好处,例如,更好的性能和内存管理以及独立的视频和 SWF 帧速率。
Adobe AIR 和 Flash Player 9.0.115.0 _cn 和更高版本支持从标准 MPEG-4 容器格式(包括 F4V、MP4、M4A、MOV、MP4V、3GP 和 3G2)中派生的文件(如果文件包含 H.264 视频和/或 HEAAC v2 编码音频)。与 Sorenson 或 On2 中同样的编码配置文件相比,H.264 可以在更低的位速率下传送更高品质的视频。HE-AAC v2 是 AAC(在 MPEG-4 视频标准中定义的一种标准音频格式)的扩展,它使用频带复制 (SBR) 和参量立体声 (PS) 技术在低位速率下提高编码效率。有关支持的编解码器和文件格式的信息,请参阅 http://www.adobe.com/go/hardware_scaling_cn 和 Flash Media Server 文档。
NetStream 类提供了一些方法和属性,它们可用于跟踪文件的加载和播放进度,以及便于用户对回放进行控制(停止或暂停等)。
音频流或视频流的一般工作流程。以下步骤简要介绍了用于发布实时音频和视频的工作流程:
NetConnection.connect() 方法连接到服务器上的应用程序实例。NetStream.attachAudio() 方法捕获音频并通过该流进行发送,然后使用 NetStream.attachCamera() 方法捕获并发送视频。NetStream.publish() 方法为该流指定唯一的名称,然后通过该流将数据发送到服务器,以使其他用户能够收到该数据。您还可以在发布数据时进行录制,以便用户可以在日后回放该数据。订阅该流的文件将在调用 play() 时使用传递给 publish() 的名称,并调用与发布者相同的 NetConnection.connect() 方法。它们必须调用 Video.attachNetStream() 方法以流式传输视频,然后调用 NetStream.play() 方法播放视频。
将关键帧用于 Flash Media Server。创建 NetConnection 和 NetStream 对象后,您可以在将实时音频或视频流式传输到服务器时,使用 NetStream.send() 在其中添加元数据。元数据可以是如下信息:视频高度或宽度、其持续时间、其创建者的姓名等。若要定义元数据,请使用特殊的处理函数名称 @setDataFrame 作为 NetStream.send() 的第一个参数。收到实时流的客户端还需要定义 onMetaData 事件处理函数,以便从流中检索元数据;有关详细信息,请参阅 NetStream.send() 方法。
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
| bufferLength : Number []
数据当前存在于缓冲区中的秒数。 | NetStream | ||
| bufferTime : Number
指定在开始显示流之前需要多长时间将消息存入缓冲区。 | NetStream | ||
| bytesLoaded : uint []
已加载到应用程序中的数据的字节数。 | NetStream | ||
| bytesTotal : uint []
正加载到应用程序中的文件的总大小(以字节为单位)。 | NetStream | ||
| checkPolicyFile : Boolean
指定应用程序在开始加载视频文件之前,是否应尝试从所加载视频文件的服务器中下载跨域策略文件。 | NetStream | ||
| client : Object
指定在其上调用回调方法的对象。 | NetStream | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| currentFPS : Number []
每秒显示的帧的数目。 | NetStream | ||
| liveDelay : Number []
在实时(未缓冲的)模式下,数据在订阅流的缓冲区中停留的秒数。 | NetStream | ||
| objectEncoding : uint []
此 NetStream 对象的对象编码(AMF 版本)。 | NetStream | ||
![]() | prototype : Object []
对类或函数对象的原型对象的引用。 | Object | |
| soundTransform : SoundTransform
在此 NetStream 对象中控制声音。 | NetStream | ||
| time : Number []
播放头的位置(以秒为单位)。 | NetStream | ||
| 方法 | 定义方 | ||
|---|---|---|---|
NetStream(connection:NetConnection)
创建可用于通过指定的 NetConnection 对象播放视频文件的流。 | NetStream | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | |
指定一个通过 NetStream 对象发送的音频流,它来自作为源传递的 Microphone 对象。 | NetStream | ||
开始从摄像头捕获视频,如果将 theCamera 设置为 null,则会停止捕获操作。 | NetStream | ||
停止播放流上的所有数据,将 time 属性设置为 0,并使该流可用于其它用途。 | NetStream | ||
![]() |
将事件调度到事件流中。 | EventDispatcher | |
![]() |
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | |
![]() |
指示对象是否已经定义了指定的属性。 | Object | |
![]() |
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
暂停视频流的回放。 | NetStream | ||
开始回放视频文件。 | NetStream | ||
![]() |
指示指定的属性是否存在、是否可枚举。 | Object | |
将音频流、视频流和文本消息流从客户端发送到 Flash Media Server,并可选择在传输期间录制该流。 | NetStream | ||
指定传入的音频是否在流上播放。 | NetStream | ||
指定传入的音频是否将在流上播放。 | NetStream | ||
指定传入视频的帧速率。 | NetStream | ||
![]() |
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | |
[]
删除当前内容的所有本地缓存数字权限管理 (DRM) 凭证数据。 | NetStream | ||
恢复回放暂停的视频流。 | NetStream | ||
搜索与指定位置最接近的关键帧(在视频行业中也称为 I 帧)。 | NetStream | ||
在发布的流上向所有订阅客户端发送一条消息。 | NetStream | ||
设置查看基础加密内容所需要的 DRM 身份验证凭据。 | NetStream | ||
![]() |
设置循环操作动态属性的可用性。 | Object | |
暂停或恢复流的回放。 | NetStream | ||
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
![]() |
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher | |
| 事件 | 摘要 | 定义方 | ||
|---|---|---|---|---|
![]() | Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时调度。 | EventDispatcher | ||
| 在异步引发异常(即来自本机异步代码)时调度。 | NetStream | |||
![]() | Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时调度。 | EventDispatcher | ||
| 在 NetStream 对象尝试播放使用数字权限管理 (DRM) 加密的内容(播放前需要用户凭据以进行身份验证)时调度。 | NetStream | |||
| 在 NetStream 对象尝试播放数字权限管理 (DRM) 加密的文件的过程中遇到与 DRM 相关的错误时调度。 | NetStream | |||
| 在开始播放数字权限管理 (DRM) 加密的内容时(如果已对用户进行身份验证并授权播放该内容)调度。 | NetStream | |||
| 在出现输入或输出错误并导致网络操作失败时调度。 | NetStream | |||
| 在 NetStream 对象报告其状态或错误条件时调度。 | NetStream | |||
| 在播放视频文件期间到达嵌入的提示点时调用。 | NetStream | |||
| 在 Flash Player 接收到作为字节数组嵌入正在播放的媒体文件中的图像数据时调度。 | NetStream | |||
| 在应用程序接收正在播放的视频中嵌入的描述性信息时调度。 | NetStream | |||
| 在 NetStream 对象完全播放完流后调度。 | NetStream | |||
| 在 Flash Player 接收到嵌入正在播放的媒体文件中的文本数据时调度。 | NetStream | |||
| 在应用程序尝试通过调用 NetStream.play() 方法播放用数字权限管理 (DRM) 加密的内容时调度。 | NetStream | |||
| bufferLength | 属性 |
bufferLength:Number [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
数据当前存在于缓冲区中的秒数。您可以将此属性与 bufferTime 属性一起使用,以评估缓冲区将近填满的程度;例如,向正等待数据加载到缓冲区中的用户显示反馈。
public function get bufferLength():Number另请参见
| bufferTime | 属性 |
bufferTime:Number [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定在开始显示流之前需要多长时间将消息存入缓冲区。例如,若要确保流的最初 15 秒无中断播放,请将 bufferTime 设置为 15;应用程序将在把 15 秒的数据存入缓冲区后才开始播放该流。
默认值是 0.1(十分之一秒)。若要确定当前位于缓冲区中的秒数,请使用 bufferLength 属性。
注意:若要避免在对预先录制的(非实时)内容进行流处理时发生扭曲,不要将 Netstream.bufferTime 为 0。对于预先录制的内容,默认情况下应用程序将使用输入缓冲区对媒体数据进行排队并正确播放媒体。对于预先录制的内容,请使用默认设置或延长缓冲时间。
从 Flash Player 9.0.115.0 开始,在调用 NetStream.pause() 时,Flash Player 不再清除缓冲区。在 Flash Player 9.0.115.0 之前,恢复播放之前 Flash Player 将等待缓冲区填满,这通常会导致延迟。
对于一次暂停,NetStream.bufferLength 属性的限值为 60 秒或二倍的 NetStream.bufferTime 值(取二者之中的较大值)。例如,如果 bufferTime 为 20 秒,在 NetStream.bufferLength 为较大值 20*2 (40) 或 60 之前,Flash Player 将一直进行缓冲,因此在本例中,在 bufferLength 为 60 之前,Flash Player 将一直进行缓冲。如果 bufferTime 为 40 秒,在 bufferLength 为较大值 40*2 (80) 或 60 之前,则 Flash Player 将一直进行缓冲,因此在本例中,在 bufferLength 为 80 秒之前,Flash Player 将一直进行缓冲。
bufferLength 属性还有一个绝对限制。如果对 pause() 的任何调用导致 bufferLength 增大到 600 秒以上或 bufferTime * 2 的值(取二者中的较大值),Flash Player 将刷新缓冲区并将 bufferLength 重置为 0。例如,如果 bufferTime 为 120 秒,当 bufferLength 达到 600 秒时,Flash Player 将刷新缓冲区;如果 bufferTime 为 360 秒,当 bufferLength 达到 720 秒时,Flash Player 将刷新缓冲区。
提示:例如,在查看器监视商用版的同时,可以在代码中使用 NetStream.pause() 来缓冲数据,然后在开始播放主视频时取消暂停。
有关新的暂停行为的详细信息,请参阅 http://www.adobe.com/go/learn_fms_smartpause_cn。
Flash Media Server。缓冲行为取决于缓冲时间是在发布流还是订阅流中设置的。对于发布流,bufferTime 指定在应用程序开始删除帧之前传出缓冲区可以增长多长时间。在高速连接上,不必担心缓冲时间问题;发送数据的速度几乎与应用程序将数据存入缓冲区一样快。但在速度较慢的连接上,应用程序将数据存入缓冲区与将数据发送到客户端的速度可能会有很大差异。
对于订阅流,bufferTime 指定在开始显示流之前需要花多长时间将传入数据存入缓冲区。例如,如果要确保流的最初 15 秒在播放时不会出现中断,请将 bufferTime 设置为 15;Flash 在将 15 秒的数据存入缓冲区后才开始播放该流。
在播放录制流时,如果 bufferTime 为 0,Flash 会将其设置为较小的值(大约为 10 毫秒)。如果以后播放实时流(例如,从播放列表中),则会永久保留此缓冲时间。即,流的 bufferTime 始终为非零值。
public function get bufferTime():Number public function set bufferTime(value:Number):void另请参见
| bytesLoaded | 属性 |
bytesLoaded:uint [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
已加载到应用程序中的数据的字节数。您可以将此属性与 bytesTotal 属性一起使用,以评估缓冲区将近填满的程度;例如,向正等待数据加载到缓冲区中的用户显示反馈。
public function get bytesLoaded():uint另请参见
| bytesTotal | 属性 |
bytesTotal:uint [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
正加载到应用程序中的文件的总大小(以字节为单位)。
public function get bytesTotal():uint另请参见
| checkPolicyFile | 属性 |
checkPolicyFile:Boolean [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定应用程序在开始加载视频文件之前,是否应尝试从所加载视频文件的服务器中下载跨域策略文件。如果对渐进式视频下载(独立的文件)使用 NetStream 对象,或者加载的文件位于进行调用的 文件所在的域外部,则应用此属性。当使用 NetStream 对象获取 RTMP 资源时,忽略此属性。
如果从进行调用的 文件所在的域外部加载视频文件,而且需要使用 BitmapData.draw() 方法对视频进行像素级访问,则将此属性设置为 true。在加载时未将 checkPolicyFile 属性设置为 true 的情况下,如果调用 BitmapData.draw(),可能会收到一个 SecurityError 异常,因为没有下载所需的策略文件。
如果不需要对正在加载的视频进行像素级访问,则不要将 checkPolicyFile 设置为 true。检查策略文件会占用网络带宽,并可能延迟下载的开始时间。
如果将 checkPolicyFile 设置为 true,则调用 NetStream.play() 方法时,Flash Player 或 AIR 运行时必须成功下载一个相关的跨域策略文件,或者必须先确定在开始下载对象(在对 NetStream.play() 的调用中指定)之前,不存在这种策略文件。若要确认是否存在策略文件,Flash Player 或 AIR 运行时将执行以下操作,具体顺序如下:
Security.loadPolicyFile() 方法调用中指定的任何未处理的策略文件。NetStream.play() 的 URL 相对应的默认位置下载策略文件,在与该 URL 所在的同一台服务器上,该默认位置为 /crossdomain.xml。无论哪种情况,Flash Player 或 AIR 运行时都要求视频服务器上存在一个正确的策略文件,该文件可以提供对传递给 play() 的 URL 处(根据该策略文件的位置)的对象的访问,并允许执行调用代码的文件所在的域通过一个或多个 <allow-access-from> 标签来访问视频。
如果将 checkPolicyFile 设置为 true,则应用程序会等到策略文件确认完毕才下载视频。等待对视频数据执行任何像素级操作(如调用 BitmapData.draw()),直至从 NetStream 对象收到 onMetaData 或 NetStatus 事件。
如果将 checkPolicyFile 设置为 true,但未找到相关的策略文件,则您只有执行需要策略文件的操作时,才会接收到错误,然后应用程序会引发 SecurityError 异常。
如果从使用服务器端 HTTP 重定向的 URL 中下载文件,请谨慎使用 checkPolicyFile。应用程序尝试检索与您在 NetStream.play() 中指定的初始 URL 相对应的策略文件。如果最终文件由于 HTTP 重定向而来自不同的 URL,则最初下载的策略文件可能不适用于该文件的最终 URL,该 URL 对安全决策至关重要。
有关策略文件的详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。
public function get checkPolicyFile():Boolean public function set checkPolicyFile(value:Boolean):void另请参见
| client | 属性 |
client:Object [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定在其上调用回调方法的对象。默认对象为 this,将创建 NetStream 对象。如果将 client 属性设置为另一个对象,则将对该对象调用回调方法。
public function get client():Object public function set client(value:Object):voidTypeError — 必须将 client 属性设置为非空对象。
|
| currentFPS | 属性 |
currentFPS:Number [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
每秒显示的帧的数目。如果要导出视频文件以在多个系统上回放,您可以在测试期间检查该值,以帮助确定在导出该文件时应用的压缩量。
public function get currentFPS():Number| liveDelay | 属性 |
liveDelay:Number [] | 语言版本 : | ActionScript 3.0 |
| ProductVersion: | Comm |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在实时(未缓冲的)模式下,数据在订阅流的缓冲区中停留的秒数。此属性指定当前的网络传输延迟(延迟时间)。
此属性主要用于服务器(如 Flash Media Server);有关详细信息,请参阅类说明。
您可以获取此属性的值来粗略估量流的传输质量,并将其传达给用户。
public function get liveDelay():Number| objectEncoding | 属性 |
objectEncoding:uint [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
此 NetStream 对象的对象编码(AMF 版本)。NetStream 对象从关联的 NetConnection 对象继承了它的 objectEncoding 值。如果 ActionScript 3.0 SWF 文件需要与在 Flash Player 9 之前发布的服务器进行通信,则了解此属性非常重要。有关详细信息,请参阅 NetConnection 类中 objectEncoding 属性的描述。
此属性的值取决于流是本地还是远程的。本地流返回 NetConnection.defaultObjectEncoding 的值。在这些流上,null 被传递给 NetConnection.connect() 方法。远程流返回与服务器建立的连接的对象编码。通过远程流连接到服务器。
如果您在未连接时就尝试读取此属性,或者尝试更改此属性,则应用程序将引发一个异常。
public function get objectEncoding():uint另请参见
| soundTransform | 属性 |
soundTransform:SoundTransform [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在此 NetStream 对象中控制声音。有关详细信息,请参阅 SoundTransform 类。
public function get soundTransform():SoundTransform public function set soundTransform(value:SoundTransform):void另请参见
| time | 属性 |
time:Number [] | 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
播放头的位置(以秒为单位)。
Flash Media Server 对于订阅流,是指流已播放的秒数。对于发布流,是指流已发布的秒数。此数字精确到千分位;将其乘以 1000 可得出流已播放的毫秒数。
对于订阅流,如果服务器停止发送数据,但流保持打开,则 time 的值停止增加。当服务器重新开始发送数据时,该值将继续增加,起始位置为上次停止处加上没有发送数据的这段时间。
当流从一个播放列表元素切换到另一个播放列表元素时,time 的值将继续增加。如果调用 NetStream.play() 并将 reset 设置为 1 或 true,或者调用 NetStream.close(),则会将此属性设置为 0。
public function get time():Number另请参见
| NetStream | () | 构造函数 |
public function NetStream(connection:NetConnection)| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
创建可用于通过指定的 NetConnection 对象播放视频文件的流。
有关支持的编解码器和文件格式的信息,请参阅 http://www.adobe.com/go/hardware_scaling_cn 和 Flash Media Server 文档。
参数connection:NetConnection — 一个 NetConnection 对象。
|
ArgumentError — 未连接 NetConnection 实例。
|
另请参见
| attachAudio | () | 方法 |
public function attachAudio(microphone:Microphone):void| 语言版本 : | ActionScript 3.0 |
| ProductVersion: | Comm |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定一个通过 NetStream 对象发送的音频流,它来自作为源传递的 Microphone 对象。此方法仅可用于指定流的发布者。
attachAudio 方法用于 Flash Media Server。此方法通常是由从客户端计算机向服务器发送实时音频(或包含音频的实时视频)的用户调用的。
您可以在调用 publish() 方法并真正开始传输之前或之后,调用此方法。想要收听此音频的订阅者必须调用 NetStream.play() 方法。您可以通过指定的 Microphone 对象的 soundTransform 属性来控制此音频流的声音属性。
参数
microphone:Microphone — 要传输的音频流的源。
|
另请参见
| attachCamera | () | 方法 |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
开始从摄像头捕获视频,如果将 theCamera 设置为 null,则会停止捕获操作。此方法仅供指定的流的发布者使用。
此方法用于 Flash Media Server;有关详细信息,请参阅类说明。
在附加了视频源后,必须调用 NetStream.publish() 才能开始传输。想要显示视频的订阅者必须调用 NetStream.play() 和 Video.attachCamera() 方法,才能在舞台上显示视频。
可以使用 snapshotMilliseconds 并通过提供一个正数值,将指定毫秒数的尾片添加到视频输入信号中的方式来发送单个快照(通过提供值 0)或一系列快照(实际上是延时拍摄镜头)。尾片延长了视频消息的显示时间。通过重复调用带有 snapshotMilliseconds 的正数值的 attachCamera(),交替快照和尾片的序列就产生了延时拍摄镜头。例如,可以每天捕获一个帧,将其追加到视频文件上。当订阅者播放该文件时,每个帧都会在屏幕上显示指定的毫秒数,然后才会显示下一个帧。
snapshotMilliseconds 参数的用途不同于可通过 Camera.setMode() 设置的 fps 参数。在指定 snapshotMilliseconds 时,您可以控制录制的帧之间的时间间隔。在使用 Camera.setMode() 指定 fps 时,您在控制录制和回放多长时间。
例如,假设您想每隔 5 分钟取一个快照,一共要取 100 个快照。您可以通过以下两种方式来实现:
NetStream.attachCamera(myCamera, 500) 命令,重复执行 100 次。整个录制过程将需要 500 分钟,但是产生的文件将在 50 秒内完成回放(100 个帧,帧与帧之间的时间间隔为 500 毫秒)。fps 值为 1/300(每 300 秒一次,即每 5 分钟一次)的 Camera.setMode() 命令,然后发出一个 NetStream.attachCamera(source) 命令,使摄像头连续捕捉 500 分钟的图像。产生的文件将在 500 分钟内完成回放,这与录制的时间长度相同,每个帧显示 5 分钟。这两种方法都同样捕获了 500 个帧,并且都很有用;具体采用何种方法,主要取决于对回放的要求。例如,在第二种情况中,可以是整段时间一直在录制音频。另外,两个文件的大小也相近。
参数
theCamera:Camera — 视频传输的源。有效值为一个 Camera 对象(可开始捕获视频)和 null。如果传递 null,应用程序将停止捕获视频,并忽略发送的其他任何参数。
| |
snapshotMilliseconds:int (default = -1) — 指定视频流是连续、单帧,还是用于创建延时拍摄的一系列单帧。
|
| close | () | 方法 |
public function close():void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
停止播放流上的所有数据,将 time 属性设置为 0,并使该流可用于其它用途。此方法还会删除通过 HTTP 下载的视频文件的本地副本。虽然应用程序会删除它所创建的文件的本地副本,但可能会在缓存目录中永久保留一个副本。如果必须完全禁止缓存视频文件或在本地进行存储,请使用 Flash Media Server。
如果使用 Flash Media Server,在从发布流中调用 NetStream.play() 或从订阅流中调用 NetStream.publish() 时将隐式地调用此方法。请注意:
close(),该流将停止发布,发布者现在可以将该流用于其它用途。订阅者不再接收在该流中发布的任何内容,因为该流已停止发布。
close(),该流将停止为订阅者播放,订阅者现在可以将该流用于其它用途。其它订阅者不受影响。
flash.net.NetStream.play(false) 关闭该流或更改流类型。
另请参见
| pause | () | 方法 |
public function pause():void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
暂停视频流的回放。如果视频已经暂停,则调用此方法将不会执行任何操作。若要在暂时视频后恢复播放,请调用 resume()。若要在暂停和播放之间切换(先暂停视频,然后恢复),请调用 togglePause()。
从 Flash Player 9.0.115.0 开始,在调用 NetStream.pause() 时,Flash Player 不再清除缓冲区。在 Flash Player 9.0.115.0 之前,恢复播放之前 Flash Player 将等待缓冲区填满,这通常会导致延迟。
对于一次暂停,NetStream.bufferLength 属性的限值为 60 秒或二倍的 NetStream.bufferTime 值(取二者之中的较大值)。例如,如果 bufferTime 为 20 秒,在 NetStream.bufferLength 为较大值 20*2 (40) 或 60 之前,Flash Player 将一直进行缓冲,因此在本例中,在 bufferLength 为 60 之前,Flash Player 将一直进行缓冲。如果 bufferTime 为 40 秒,在 bufferLength 为较大值 40*2 (80) 或 60 之前,则 Flash Player 将一直进行缓冲,因此在本例中,在 bufferLength 为 80 秒之前,Flash Player 将一直进行缓冲。
bufferLength 属性还有一个绝对限制。如果对 pause() 的任何调用导致 bufferLength 增大到 600 秒以上或 bufferTime * 2 的值(取二者中的较大值),Flash Player 将刷新缓冲区并将 bufferLength 重置为 0。例如,如果 bufferTime 为 120 秒,当 bufferLength 达到 600 秒时,Flash Player 将刷新缓冲区;如果 bufferTime 为 360 秒,当 bufferLength 达到 720 秒时,Flash Player 将刷新缓冲区。
提示:例如,在查看器监视商用版的同时,可以在代码中使用 NetStream.pause() 来缓冲数据,然后在开始播放主视频时取消暂停。
有关新的暂停行为的详细信息,请参阅 http://www.adobe.com/go/learn_fms_smartpause_cn。
另请参见
| play | () | 方法 |
public function play(... arguments):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
开始回放视频文件。
有关支持的编解码器和文件格式的信息,请参阅 http://www.adobe.com/go/hardware_scaling_cn 和 Flash Media Server 文档。
若要查看视频数据,您必须创建一个 Video 对象并调用 Video.attachNetStream() 方法;将自动播放与视频一起流式传输的音频或只包含音频的文件。若要流式传输来自麦克风的音频,请使用 NetStream.attachAudio() 方法,并通过 Microphone 对象控制音频的某些属性。
若要控制与视频文件关联的音频,您可以使用 DisplayObjectContainer.addChild() 方法将音频传送到显示列表中的某个对象;可随后创建 Sound 对象来控制音频的某些属性。有关详细信息,请参阅 DisplayObjectContainer.addChild() 方法。
如果无法找到视频文件,则会调度 netStatus 事件。若要停止当前播放的流,请使用 close() 方法。
在不使用 Flash Media Server 的情况下使用此方法时,有一些安全注意事项。受信任的本地沙箱或只能与远程内容交互的沙箱中的 文件可以加载并播放远程沙箱中的视频文件,但如果没有以跨域策略文件的形式进行显式许可,则无法访问该远程文件的数据。此外,还可以在包含 SWF 内容的 HTML 页中设置 object 和 embed 标签的 allowNetworking 参数,以防止在 Flash Player 中运行的 SWF 文件使用此方法。
有关详细信息,请参阅以下部分:
Netstream.checkPolicyFile 属性。参数
... arguments — 要播放的视频文件的位置(作为 URLRequest 对象或字符串)。在应用程序安全沙箱以外的 Flash Player 和 AIR 内容中,您可以播放与 SWF 文件存储在同一个目录或子目录中的本地视频文件,但是不能导航到更高级别的目录。
Flash Media Server 若要在 Flash Media Server 上播放视频文件,请指定不带文件扩展名的流名称(如
如果使用 Flash Media Server,
|
status: — 在尝试播放用数字权限管理 (DRM) 加密的内容时调度。code 属性的值为“DRM.encryptedFLV”。 |
SecurityError — 本地不受信任的 SWF 文件无法与 Internet 通信。您可以通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来消除此限制。
| |
ArgumentError — 至少必须指定一个参数。
| |
Error — NetStream 对象无效。这可能是由于失败的 NetConnection 造成的。
|
另请参见
ns.play("record1", 0, 100, true);
ns.play("stephen");
| publish | () | 方法 |
public function publish(name:String = null, type:String = null):void| 语言版本 : | ActionScript 3.0 |
| ProductVersion: | Comm |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
将音频流、视频流和文本消息流从客户端发送到 Flash Media Server,并可选择在传输期间录制该流。此方法仅供指定的流的发布者使用。
不要使用此方法让客户端播放已发布和录制的流。而应为该客户端创建一个 NetStream 实例,并调用 play() 方法:
var subscribeNS:NetStream = new NetStream(myNetConnection);
subscribeNS.play("streamToPlay");
使用 Flash Media Server 录制流时,服务器将创建一个文件,并将其存储在服务器上应用程序目录的子目录中。每个流都存储在名称与传递给 NetConnection.connect() 的应用程序实例名称相匹配的目录中。服务器自动创建这些目录;您不必为每个应用程序实例都创建一个目录。例如,下面的代码说明了如何连接到特定应用程序实例,该实例存储在应用程序目录下面名为 lectureSeries 的目录中。名为 lecture.flv 的文件保存在名为 /yourAppsFolder/lectureSeries/streams/Monday 的子目录中:
var myNC:NetConnection = new NetConnection();
myNC.connect("rtmp://server.domain.com/lectureSeries/Monday");
var myNS:NetStream = new NetStream(myNC);
myNS.publish("lecture", "record");
下例说明如何连接到同一个应用程序的不同实例,而发出相同的发布命令。名为 lecture.flv 的文件保存在名为 /yourAppsFolder/lectureSeries/streams/Tuesday 的子目录中。
var myNC:NetConnection = new NetConnection();
myNC.connect("rtmp://server.domain.com/lectureSeries/Tuesday");
var myNS:NetStream = new NetStream(myNC);
myNS.publish("lecture", "record");
如果不传递实例名称的值,则该值将与传递给 name 属性的值相匹配,该属性保存在名为 /yourAppsFolder/appName/streams/_definst_(针对“默认实例”)的子目录中。有关使用实例名称的详细信息,请参阅 NetConnection.connect() 方法。有关回放视频文件的信息,请参阅 NetStream.play() 方法。
当 Flash Media Server 应用程序客户端调用 publish() 时,应用程序将收到 onPublish 事件。应用程序必须在服务器端脚本中处理该事件。当客户端停止发布时,应用程序将收到 onUnpublish 事件。有关详细信息,请参阅 Flash Media Server Server-Side ActionScript Language Reference(《Flash Media Server 服务器端 ActionScript 语言参考》)。
此方法可调度具有若干个不同信息对象的 netStatus 事件。例如,如果某个用户在具有指定名称的流上进行发布,则 netStatus 事件将随 NetStream.Publish.BadName 的代码属性一起调度。有关详细信息,请参阅 netStatus 事件。
参数
name:String (default = null) — 标识该流的字符串。如果传递 false,则发布操作将停止。订阅此流的客户端必须在调用 NetStream.play() 时仍然传递此名称。不必在流名称中包含文件扩展名。流名称后面不要跟“/”。例如,不要使用流名称“bolero/”。
| |
type:String (default = null) — 指定如何发布该流的字符串。有效值为“record”、“append”和“live”。默认值为“live”。
|
另请参见
| receiveAudio | () | 方法 |
public function receiveAudio(flag:Boolean):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定传入的音频是否在流上播放。此方法仅可用于订阅了指定流的客户端,不可用于流的发布者。
此方法主要用于 Flash Media Server;有关详细信息,请参阅类说明。
您可以在调用 NetStream.play() 方法并真正开始接收流之前或之后,调用此方法。例如,您可以将这些方法附加到某个按钮上,用户可以通过单击该按钮将传入的音频流静音或取消静音。
如果指定的流仅包含音频数据,则将 false 值传递给该方法可以阻止 NetStream.time 进一步递增。
参数
flag:Boolean — 指定传入音频是在流上播放 (true) 还是不播放 (false)。默认值为 true。
|
| receiveVideo | () | 方法 |
public function receiveVideo(flag:Boolean):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定传入的音频是否将在流上播放。此方法仅可用于订阅了指定流的客户端,不可用于流的发布者。
此方法主要用于 Flash Media Server;有关详细信息,请参阅类说明。
您可以在调用 NetStream.play() 方法并真正开始接收流之前或之后,调用此方法。例如,您可以将这些方法附加到某个按钮上,用户可以通过按该按钮来显示或隐藏传入的视频流。
如果指定的流仅包含视频数据,则将 false 值传递给该方法可以阻止 NetStream.time 进一步递增。
参数
flag:Boolean — 指定传入视频是在此流上播放 (true) 还是不播放 (false)。默认值为 true。
|
| receiveVideoFPS | () | 方法 |
public function receiveVideoFPS(FPS:Number):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
指定传入视频的帧速率。此方法仅可用于订阅了指定流的客户端,不可用于流的发布者。
此方法主要用于 Flash Media Server;有关详细信息,请参阅类说明。
您可以在调用 NetStream.play() 方法并真正开始接收流之前或之后,调用此方法。例如,可以将这些方法附加到供用户设置传入视频帧速率的文本字段。
若要停止接收视频,请为 FPS 传递 0。若要确定当前帧速率,请使用 NetStream.currentFPS。
如果向 FPS 参数传递一个值以限制视频的帧速率,Flash Media Server 将会尝试在保持视频完整性的同时降低帧速率。服务器将发送最小数量的视频帧以满足每两个关键帧之间需要的速率。但请牢记,必须连续发送 I 帧(或中间帧);否则,视频将中断。因此,在关键帧后需要立即连续发送需要的帧数。由于各个帧不是均匀分布的,因此在由于中断而截断的部分中,动作仍会平滑地显示。
参数
FPS:Number — 指定用于播放传入视频的每秒帧速率。
|
| () | 方法 |
public static function resetDRMVouchers():void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
删除当前内容的所有本地缓存数字权限管理 (DRM) 凭证数据。
应用程序必须重新下载凭证才能让用户访问加密的内容。
IOError — 无法删除凭证数据。
|
| resume | () | 方法 |
public function resume():void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
恢复回放暂停的视频流。如果视频已在播放,则调用此方法将不会执行任何操作。
另请参见
| seek | () | 方法 |
public function seek(offset:Number):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
搜索与指定位置最接近的关键帧(在视频行业中也称为 I 帧)。关键帧位于从流的开始处算起的偏移位置(以秒为单位)。
视频流通常是使用以下两种类型的帧进行编码的:关键帧(或 I 帧)和 P 帧。关键帧包含完整图像;而 P 帧是一个中间帧,它在两个关键帧之间提供额外的视频信息。通常,视频流每 10 到 50 帧中有一个关键帧。
在 Flash Media Server 上,seek() 的行为是由 Application.xml 配置文件中的 EnhancedSeek 元素的值控制的。
如果 EnhancedSeek 为 false,服务器将使用标准搜索模式。在标准搜索模式下,服务器开始从最近的关键帧进行流式传输。例如,如果视频在第 0 秒和第 10 秒处各有一个关键帧,到第 4 秒位置的搜索导致使用 0 秒处的关键帧在第 4 秒处开始回放。在到达下一个关键帧(在第 10 秒处)之前,视频将保持冻结。若要获得更好的搜索体验,您需要缩短关键帧间隔。在标准搜索模式下,无法在两个关键帧之间的位置启动视频。
如果 EnhancedSeek 为 true(默认值),服务器将基于前一个关键帧和所有中间的 P 帧在 offset 位置生成一个新的关键帧。不过,这会在服务器上产生较高的处理负载,并且生成的关键帧中可能会发生扭曲。如果视频编解码器为 On2,则会将搜索点之前的关键帧以及该关键帧和搜索点之间的所有 P 帧发送到客户端。
参数
offset:Number — 要在视频文件中移动到的时间近似值(以秒为单位)。使用 Flash Media Server 时,如果在 Application.xml 配置文件中将 <EnhancedSeek> 设置为 true(这是默认设置),服务器将在 offset 位置生成一个关键帧。
|
另请参见
| send | () | 方法 |
public function send(handlerName:String, ... arguments):void| 语言版本 : | ActionScript 3.0 |
| ProductVersion: | Comm |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在发布的流上向所有订阅客户端发送一条消息。此方法仅供指定的流的发布者使用,并与 Flash Media Server 一起使用。若要处理并响应该消息,请在 NetStream 对象上创建一个处理函数,例如,ns.HandlerName。
Flash Player 或AIR 不对方法或方法的数据、对象原型变量或不可枚举的变量进行序列化处理。对于显示对象,Flash Player 或 AIR 仅对路径而不对数据进行序列化处理。
您可以调用 send() 方法,将数据关键帧添加到发送给 Flash Media Server 的实时流中。数据关键帧是发布者添加到实时流中的消息。通常,在从摄像头和麦克风为实时流捕获数据之前,使用数据关键帧将元数据添加到该流中。在发布实时流期间,发布者可以随时添加数据关键帧。只要发布者连接到服务器上,就会将数据关键帧保存在服务器的内存中。
如果客户端是在添加数据关键帧之前订阅实时流的,则会在添加后立即收到该关键帧。如果客户端是在添加数据关键帧之后订阅实时流的,则会在订阅时收到该关键帧。
若要将元数据关键帧添加到发送给 Flash Media Server 的实时流中,请使用 @setDataFrame 作为处理函数名称,后跟两个其它参数,例如:
var ns:NetStream = new NetStream(nc);
ns.send("@setDataFrame", "onMetaData", metaData);
@setDataFrame 参数引用 Flash Media Server 中内置的一个特殊处理函数。onMetaData 参数是客户端应用程序中侦听 onMetaData 事件并检索元数据的回调函数的名称。第三项 metaData 是包含用于定义元数据值的属性的 Object 或 Array 实例。发布者应该设置订阅者易于理解的属性名称;有关建议的属性名称的列表,请参阅 Flash Media Server 文档。
可以使用 @clearDataFrame 清除已在流中设置的元数据关键帧:
ns.send("@clearDataFrame", "onMetaData");
参数
handlerName:String — 要发送的消息;还有接收消息使用的 ActionScript 处理函数的名称。处理函数的名称只能为单级形式(即不能是父/子多级形式)并相对于流对象。不要对处理函数名称使用保留字。例如,将“close”用作处理函数名称将导致该方法失败。如果使用 Flash Media Server,请使用 @setDataFrame 将元数据关键帧添加到实时流中,或者使用 @clearDataFrame 删除关键帧。
| |
... arguments — 可以是任何类型的可选参数。它们经过序列化并通过该连接发送,而接收处理函数则以相同的顺序接收它们。如果某个参数为循环对象(如循环的链接列表),则序列化函数可以正确处理引用。使用 Flash Media Server 时,如果 @setDataFrame 是第一个参数,请使用 onMetaData 作为第二个参数;对于第三个参数,请传递将元数据设置为属性的 Object 或 Array 实例。有关建议的属性名称的列表,请参阅 Flash Media Server 文档。如果将 @clearDataFrame 作为第一个参数,请使用 onMetaData 作为第二个参数,而不使用第三个参数。
|
另请参见
NetStream 对象。一个对象用于将实时流发布到服务器上;另一个对象用于订阅该流。
package {
import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.utils.setTimeout;
public class TestExample extends Sprite
{
var nc:NetConnection = new NetConnection();
var ns1:NetStream;
var ns2:NetStream;
var vid:Video = new Video(300,300);
var obj:Object = new Object();
public function TestExample() {
nc.objectEncoding = 0;
nc.addEventListener("netStatus", onNCStatus);
nc.connect("rtmp://localhost/FlashVideoApp");
addChild(vid);
}
function onNCStatus(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
trace("You've connected successfully");
ns1 = new NetStream(nc);
ns2 = new NetStream(nc);
ns1.client = new CustomClient();
ns1.publish("dummy", "live");
ns2.play("dummy");
ns2.client = new CustomClient();
vid.attachNetStream(ns2);
setTimeout(sendHello, 3000);
break;
case "NetStream.Publish.BadName":
trace("Please check the name of the publishing stream" );
break;
}
}
function sendHello():void {
ns1.send("myFunction", "hello");
}
}
}
class CustomClient {
public function myFunction(event:String):void {
trace(event);
}
}
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetStream.Publish.Start":
var metaData:Object = new Object();
metaData.title = "myStream";
metaData.width = 400;
metaData.height = 200;
ns.send("@setDataFrame", "onMetaData", metaData);
ns.attachCamera( Camera.getCamera() );
ns.attachAudio( Microphone.getMicrophone() );
}
}onMetaData 事件处理函数。onMetaData 事件处理函数不是使用 addEventListener() 注册的,而是一个具有名称 onMetaData 的回调函数,例如:
public function onMetaData(info:Object):void {
trace("width: " + info.width);
trace("height: " + info.height);
}
// Create a NetStream for playing
var my_ns:NetStream = new NetStream(my_nc);
my_video.attachNetStream(my_ns);
// Play the stream record1
my_ns.play("record1", 0, -1, true);
// Switch to the stream live1 and play for 5 seconds.
// Since reset is false, live1 will start to play after record1 is done.
my_ns.play("live1", -1 , 5, false);
//To play at normal speed
var my_ns:NetStream = new NetStream(my_nc);
my_ns.play("log", 0, -1);
//To get the data messages all at once
my_ns.play("log", 0, -1, 3);| () | 方法 |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
设置查看基础加密内容所需要的 DRM 身份验证凭据。
setDRMAuthenticationCredentials() 方法提供的凭据与内容提供程序或代理服务器已知并接受的凭据相匹配。这些凭据与用户获取权限以查看内容时使用的凭据相同。
参数
userName:String — 有效的用户名凭据。
| |
password:String — 与提供的用户名对应的密码凭据。
| |
type:String — 一个字符串,指定提供哪种类型的身份验证凭据。有效值为“drm”和“proxy”。默认值为“drm”。
|
另请参见
| togglePause | () | 方法 |
public function togglePause():void| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
暂停或恢复流的回放。第一次调用此方法时,将暂停播放;下一次调用此方法时,将恢复播放。您可以使用此方法,允许用户通过按某个按钮来暂停或恢复回放。
另请参见
| asyncError | 事件 |
flash.events.AsyncErrorEventflash.events.AsyncErrorEvent.ASYNC_ERROR| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在异步引发异常(即来自本机异步代码)时调度。当服务器调用客户端上未定义的方法时调度此事件。
AsyncErrorEvent.ASYNC_ERROR 常数定义 asyncError 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 调度事件的对象。 |
error | 触发此事件的错误。 |
另请参见
| 事件 |
flash.events.DRMAuthenticateEventflash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
在 NetStream 对象尝试播放使用数字权限管理 (DRM) 加密的内容(播放前需要用户凭据以进行身份验证)时调度。
使用 NetStream 对象的 setDRMAuthenticationCredentials() 方法对用户进行身份验证。如果用户身份验证失败,则应用程序将重新尝试身份验证并为 NetStream 对象调度一个新的 DRMAuthenticateEvent 事件。
DRMAuthenticateEvent.DRM_AUTHENTICATE 常量定义 drmAuthenticate 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
authenticationType | 指示提供的凭据是用于针对 Flash Media Rights Management Server (FMRMS) 的身份验证,还是用于针对代理服务器的身体验证。 |
bubbles | false |
cancelable | false 指示没有要取消的默认行为。 |
header | 服务器提供的加密内容文件标头。 |
netstream | 启动此事件的 NetStream 对象。 |
passwordPrompt | 服务器提供的密码凭据提示。 |
target | NetStream 对象。 |
urlPrompt | 服务器提供的要显示的 URL 提示。 |
usernamePrompt | 服务器提供的用户名凭据提示。 |
另请参见
| 事件 |
flash.events.DRMErrorEventflash.events.DRMErrorEvent.DRM_ERROR| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
在 NetStream 对象尝试播放数字权限管理 (DRM) 加密的文件的过程中遇到与 DRM 相关的错误时调度。例如,用户身份验证失败时,将调度 DRMErrorEvent 对象。这可能是由于用户没有购买查看内容的权限或者是由于内容提供程序不支持执行查看的应用程序。
DRMErrorEvent.DRM_ERROR 常量定义 drmError 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
subErrorID | 指示有关基本问题的更多详细信息的错误 ID。 |
target | NetStream 对象。 |
另请参见
| 事件 |
flash.events.DRMStatusEventflash.events.DRMStatusEvent.DRM_STATUS| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
在开始播放数字权限管理 (DRM) 加密的内容时(如果已对用户进行身份验证并授权播放该内容)调度。
DRMStatusEvent 对象包含与凭证有关的信息,如是否可以脱机使用该内容或凭证何时过期而无法再查询该内容。
DRMStatusEvent.DRM_STATUS 常量定义 drmStatus 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
detail | 说明状态事件上下文的字符串。 |
isAnonymous | 指示使用 DRM 加密保护的内容是否可用而不需要用户提供身份验证凭据。 |
isAvailableOffline | 指示使用 DRM 加密保护的内容是否可脱机使用。 |
offlineLeasePeriod | 可以脱机查看内容的剩余天数。 |
方案 | DRM 状态事件的自定义对象。 |
target | NetStream 对象。 |
voucherEndDate | 凭证的绝对到期日期,此后,用户将无法再查看该内容 |
另请参见
| ioError | 事件 |
flash.events.IOErrorEventflash.events.IOErrorEvent.IO_ERROR| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在出现输入或输出错误并导致网络操作失败时调度。
定义ioError 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
errorID | 与特定错误关联的引用数字。 |
target | 发生输入/输出错误的网络对象。 |
text | 要显示为错误消息的文本。 |
| netStatus | 事件 |
flash.events.NetStatusEventflash.events.NetStatusEvent.NET_STATUS| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在 NetStream 对象报告其状态或错误条件时调度。netStatus 事件包含一个 info 属性,该属性是一个包含有关事件特定信息(例如连接尝试成功还是失败)的信息对象。
netStatus 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
info | 一个对象,具有描述对象的状态或错误情况的属性。 |
target | 报告其状态的 NetConnection 或 NetStream 对象。 |
另请参见
| onCuePoint | 事件 |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在播放视频文件期间到达嵌入的提示点时调用。在视频到达某个特定提示点时,您可以使用此处理函数触发代码中的操作,从而使应用程序中的其它操作与视频回放事件实现同步。有关 Flash Media Server 支持的视频文件格式的信息,请参阅 Flash Media Server 文档。
此事件用于 Flash Media Server。它不是 Flash Player 或AIR API 的一部分,只是为了方便起见包含在此语言参考中。您不能使用 addEventListener() 方法或任何其它的 EventDispatcher 方法来侦听或处理此事件。相反,您必须定义一个回调函数,并将其直接附加到以下对象之一:
client 属性所引用的对象。可以在视频文件中嵌入以下类型的提示点:
time 属性对应于该关键帧。导航提示点经常被用作书签或入口点,以便用户在视频文件中导航。onCuePoint 事件对象具有以下属性:
| 属性 | Description |
|---|---|
name | 将提示点嵌入视频文件时为其指定的名称。 |
parameters | 为此提示点指定的一个关联数组,它由名称/值对字符串组成。任何有效的字符串都可用于参数名或参数值。 |
time | 提示点在视频文件回放期间的出现时间(以秒为单位)。 |
type | 到达的提示点的类型:导航提示点或事件提示点。 |
在首次对视频文件进行编码时,或者在 Flash 创作工具中使用“视频导入”向导导入视频剪辑时,您可以在该视频文件中定义提示点。
onMetaData 事件还会在视频文件中检索有关提示点的信息。不过,onMetaData 事件会在视频开始播放之前,获取有关所有提示点的信息。onCuePoint 事件会在回放期间对某个提示点所指定的时间,接收有关该提示点的信息。
通常,要让代码在特定的提示点出现时对它给予响应,请使用 onCuePoint 事件来触发代码中的某个操作。
您可以使用提供给 onMetaData 事件的提示点列表,允许用户在视频流的预定义点处开始播放视频。将提示点的 time 属性的值传递给 NetStream.seek() 方法,以便从该提示点播放视频。
另请参见
| onImageData | 事件 |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9.0.115.0 |
在 Flash Player 接收到作为字节数组嵌入正在播放的媒体文件中的图像数据时调度。该图像数据可以生成 JPEG、PNG 或 GIF 内容。使用 flash.display.Loader.loadBytes() 方法可以将该字节数组加载到显示对象中。
此特殊事件用于 Flash Media Server;有关详细信息,请参阅类说明。无法使用 addEventListener() 方法或任何其它 EventDispatcher 方法来对此事件进行侦听或处理。而必须定义一个回调函数,并将其直接附加到 imageData 对象。
此事件在调用 NetStream.play() 方法之后、在视频播放头前进之前触发。
onImageData 事件对象包含通过 AMF0 数据通道以字节数组形式发送的图像数据。
Netstream.client 属性来处理 onTextData 和 onImageData 的回调函数。onImageDataHandler() 函数使用 onImageData 事件对象 imageData 来存储该字节数组。而 onTextDataHandler() 函数使用 onTextData 事件对象 textData 来存储各段文本数据(每段数据都是 textData 对象的一个属性)。
您需要在代码中用位置 "yourURL" 的文本或图像元数据替换媒体文件的实际位置。
您也可以使用自定义类处理图像和文本数据。有关详细信息和示例,请参阅文章 Handling metadata and cue points in Flash video(处理 Flash 视频中的元数据和提示点)。
package {
import flash.display.*;
import flash.net.*;
import flash.media.*;
import flash.system.*;
import flash.events.*;
public class OnTextDataExample extends Sprite {
public function OnTextDataExample():void {
var customClient:Object = new Object();
customClient.onImageData = onImageDataHandler;
customClient.onTextData = onTextDataHandler;
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);
my_ns.play("yourURL");
my_ns.client = customClient;
var my_video:Video = new Video();
my_video.attachNetStream(my_ns);
addChild(my_video);
}
public function onImageDataHandler(imageData:Object):void {
trace("imageData length: " + imageData.data.length);
var imageloader:Loader = new Loader();
imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
addChild(imageloader);
}
public function onTextDataHandler(textData:Object):void {
trace("--- textData properties ----");
var key:String;
for (key in textData) {
trace(key + ": " + textData[key]);
}
}
}
}
另请参见
| onMetaData | 事件 |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在应用程序接收正在播放的视频中嵌入的描述性信息时调度。有关 Flash Media Server 支持的视频文件格式的信息,请参阅 Flash Media Server 文档。
此特殊事件用于 Flash Media Server;有关详细信息,请参阅类说明。从技术角度而言,它不是 Flash Player 或AIR API 的一部分,只是为了方便起见包含在此语言参考中。您不能使用 addEventListener() 方法或任何其它的 EventDispatcher 方法来侦听或处理此事件。相反,您必须定义一个回调函数,并将其直接附加到以下对象之一:
client 属性所引用的对象。Flash Video Exporter 实用程序(1.1 版本或更高版本)将视频的持续时间、创建日期、数据速率及其它信息嵌入视频文件本身。不同的视频编码器嵌入不同的元数据组中。
此事件在调用 NetStream.play() 方法之后、在视频播放头前进之前触发。
在多数情况下,流元数据中嵌入的持续时间值接近于实际持续时间,但并不精确。换言之,当播放头在视频流的结尾处时,此值不会始终与 NetStream.time 属性的值相匹配。
对于每个元数据项,onMetaData 事件对象都包含一个属性。
另请参见
| onPlayStatus | 事件 |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9 |
在 NetStream 对象完全播放完流后调度。此处理函数将返回信息对象,这些信息对象提供 netStatus 事件返回的信息之外的其它信息。您可以在 NetStream 对象从播放列表中的一个流切换到另一个流时(如信息对象 NetStream.Play.Switch 所示),或者在 NetStream 对象播放到结尾时(如信息对象 NetStream.Play.Complete 所示),使用此处理函数触发代码中的操作。若要响应此事件,必须创建一个函数来处理服务器所发送的信息对象。
此事件用于 Flash Media Server;有关详细信息,请参阅类说明。它不是 Flash Player 或AIR API 的一部分,只是为了方便起见包含在此语言参考中。您不能使用 addEventListener() 方法或任何其它的 EventDispatcher 方法来侦听或处理此事件。相反,您必须定义一个回调函数,并将其直接附加到以下对象之一:
client 属性所引用的对象。此事件可返回一个具有以下属性的信息对象:
| 代码属性 | 级别属性 | 意义 |
|---|---|---|
NetStream.Play.Switch | "status" | 订阅者正在从播放列表中的一个流切换到另一个流。 |
NetStream.Play.Complete | "status" | 播放已结束。 |
另请参见
| onTextData | 事件 |
| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0, Flash Player 9.0.115.0 |
在 Flash Player 接收到嵌入正在播放的媒体文件中的文本数据时调度。文本数据为 UTF-8 格式,并且可能包含根据 3GP 计时文本规范进行格式化的相关信息。此特殊事件用于 Flash Media Server;有关详细信息,请参阅类说明。无法使用 addEventListener() 方法或任何其它 EventDispatcher 方法来对此事件进行侦听或处理。而必须定义一个回调函数,并将其直接附加到 textData 对象。
此事件在调用 NetStream.play() 方法之后、在视频播放头前进之前触发。
onTextData 事件对象对每段文本数据包含一个属性。
Netstream.client 属性来处理 onTextData 和 onImageData 的回调函数。onImageDataHandler() 函数使用 onImageData 事件对象 imageData 来存储该字节数组。而 onTextDataHandler() 函数使用 onTextData 事件对象 textData 来存储各段文本数据(每段数据都是 textData 对象的一个属性)。
您需要在代码中用位置 "yourURL" 的文本或图像元数据替换媒体文件的实际位置。
您也可以使用自定义类处理图像和文本数据。有关详细信息和示例,请参阅文章 Handling metadata and cue points in Flash video(处理 Flash 视频中的元数据和提示点)。
package {
import flash.display.*;
import flash.net.*;
import flash.media.*;
import flash.system.*;
import flash.events.*;
public class OnTextDataExample extends Sprite {
public function OnTextDataExample():void {
var customClient:Object = new Object();
customClient.onImageData = onImageDataHandler;
customClient.onTextData = onTextDataHandler;
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);
my_ns.play("yourURL");
my_ns.client = customClient;
var my_video:Video = new Video();
my_video.attachNetStream(my_ns);
addChild(my_video);
}
public function onImageDataHandler(imageData:Object):void {
trace("imageData length: " + imageData.data.length);
var imageloader:Loader = new Loader();
imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
addChild(imageloader);
}
public function onTextDataHandler(textData:Object):void {
trace("--- textData properties ----");
var key:String;
for (key in textData) {
trace(key + ": " + textData[key]);
}
}
}
}
另请参见
| 事件 |
flash.events.StatusEventflash.events.StatusEvent.STATUS| 语言版本 : | ActionScript 3.0 |
| RuntimeVersions: | AIR 1.0 |
在应用程序尝试通过调用 NetStream.play() 方法播放用数字权限管理 (DRM) 加密的内容时调度。状态代码属性的值将为“DRM.encryptedFLV”。
status 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
code | 对象状态的描述。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
level | 消息类别,例如 "status"、"warning" 或 "error"。 |
target | 报告其状态的对象。 |
另请参见
videoURL 的变量匹配,在本例中,名为 Video.flv 的 FLV 文件与 SWF 文件在同一个目录中。
在本例中,创建 Video 和 NetStream 对象并调用 Video.attachNetStream() 和 NetStream.play() 方法的代码放在处理函数中。仅当连接到 NetConnection 对象的尝试取得成功时才调用处理函数,即,当 netStatus 事件返回 info 对象(带有一个表示成功的 code 属性)时,才调用该处理函数。建议您在调用 NetStream.play() 之前,等待连接成功。
package {
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
public class NetConnectionExample extends Sprite {
private var videoURL:String = "Video.flv";
private var connection:NetConnection;
private var stream:NetStream;
public function NetConnectionExample() {
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("Stream not found: " + videoURL);
break;
}
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function connectStream():void {
stream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client = new CustomClient();
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(videoURL);
addChild(video);
}
}
}
class CustomClient {
public function onMetaData(info:Object):void {
trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
}
public function onCuePoint(info:Object):void {
trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
}
}
当前页: http://livedocs.adobe.com/flex/3_cn/flash/net/NetStream.html