从本地目录或 Web 服务器播放媒体文件;从 Flash Media Server 播放媒体文件或实时流。调度 NetStatusEvent
对象,以报告状态和错误消息。
有关支持的编解码器和文件格式的信息,请参阅下面的内容:
- Flash Media Server 文档
- Exploring Flash Player support for high-definition H.264 video and AAC audio(了解高分辨率 H.264 视频和 AAC 音频的 Flash Player 支持)
- FLV/F4V open specification documents(FLV/F4V 开放规范文档)
播放文件或实时流的工作流程
- 创建 NetConnection 对象并调用
NetConnection.connect()
。要从本地目录或 Web 服务器播放文件,可传递 null。
要从 Flash Media Server 播放录制的文件或实时流,可传递 Flash Media Server 应用程序的 URI。
- 调用
NetConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler)
以侦听 NetStatusEvent 事件。 - 对
"NetConnection.Connect.Success"
创建 NetStream 对象,并将 NetConnection 对象传递给构造函数。 - 创建一个 Video 对象,然后调用
Video.attachNetStream()
并传递 NetStream 对象。 - 调用
NetStream.play()
。要播放实时流,可对传递到
NetStream.publish()
方法的流名称进行传递。要播放录制文件,可传递该文件名。
- 调用
addChild()
并传递 Video 对象以显示视频。
注意:要查看示例代码,请滚动到此页底部的示例。
启用数据生成模式
调用 play(null)
以启用“数据生成模式”。在此模式下,调用 appendBytes()
方法,将数据传送到 NetStream。使用“数据生成模式”通过 HTTP 从 Apache HTTP 服务器上的 Adobe HTTP 动态流原始模块流式传输内容。HTTP 动态流允许客户端快速搜索文件中的任意点。Open Source Media Framework (OSMF) 支持视频点播和实时流的 HTTP 动态流。有关如何使用 NetStream 数据生成模式的示例,请下载 OSMF 源。有关 HTTP 动态流的详细信息,请参阅 HTTP 动态流。
在不使用 Flash Media Server 的情况下使用此方法时,有一些安全注意事项。受信任的本地沙箱或只能与远程内容交互的沙箱中的 文件可以加载并播放远程沙箱中的视频文件,但如果没有以 URL 策略文件的形式进行显式许可,则无法访问该远程文件的数据。此外,还可以在包含 SWF 内容的 HTML 页中设置 object
和 embed
标签的 allowNetworking
参数,以防止在 Flash Player 中运行的 SWF 文件使用此方法。有关安全性的详细信息,请参阅 Flash Player 开发人员中心主题:安全性。
播放本地文件
媒体文件的位置。参数可以是字符串、URLRequest.url
属性或引用这二者之一的变量。在 Flash Player 以及应用程序安全沙箱以外的 AIR 内容中,您可以播放与 SWF 文件存储在同一个目录或位于其子目录中的本地视频文件,但是不能导航至更高级别的目录中。
对于应用程序安全沙箱中的 AIR 内容,您为媒体文件指定的路径是相对于 SWF 文件的目录的。但是,您不能浏览到 SWF 文件的目录之上。不要指定完整路径,因为 AIR 会将其视为相对路径。
播放 Flash Media Server 中的文件
name:Object |
必需 | 录制的文件的名称、NetStream.publish() 发布的实时数据的标识符或 false 。如果为 false ,流将停止播放并忽略任何其他参数。有关文件名语法的详细信息,请参阅此表后面的文件格式表。 |
start:Number |
可选 | 开始时间(以秒为单位)。允许的值为 -2、-1、0 或正数。默认值为 -2,它先查找实时流,然后查找录制流,如果都没有找到,则打开实时流。如果为 -1,则只播放实时流。如果为 0 或正数,则播放录制流,从第 start 秒开始。 |
len:Number |
如果指定了 start ,则是可选的。 |
播放持续时间(以秒为单位)。允许的值为 -1、0 或正数。默认值为 -1,它一直播放完实时流或录制流。如果为 0,则播放距录制流开始处 start 秒的单个帧。如果为正数,则播放实时流或录制流 len 秒。 |
reset:Object |
如果指定了 len ,则是可选的。 |
是否清除播放列表。默认值为 1 或 true ,它清除任何以前的 play 调用并立即播放 name 。如果为 0 或 false ,则将流添加到播放列表中。如果为 2,则将播放列表保持不变,并同时返回所有流消息,而不是分段返回。如果为 3,则清除播放列表,并同时返回所有流消息。 |
可以播放下表中所列的文件格式。语法将随文件格式的不同而不同。
FLV | 以字符串形式指定流名称(在“samples”目录中),不带文件扩展名。 | ns.play("samples/myflvstream"); |
mp3 或 ID3 | 使用前缀 mp3: 或 id3: 以字符串形式指定流名称(在“samples”目录中),不带文件扩展名。 |
|
基于 MPEG-4 的文件(如 F4V 和 MP4) | 使用前缀 mp4: 以字符串形式指定流名称(在“samples”目录中)。该前缀向服务器表明文件包含 H.264 编码的视频和 AAC 编码的音频(在 MPEG-4 第 14 部分容器格式内)。如果服务器上的文件有文件扩展名,请指定它。 |
|
RAW | 使用前缀 raw: 以字符串形式指定流名称(在“samples”目录中) |
ns.play("raw:samples/myvideo"); |
启用数据生成模式
要启用“数据生成模式”,请将 null
值传递给在已连接到 null
的 NetConnection 上创建的 NetStream。在此模式下,调用 appendBytes()
以将数据传送到 NetStream。(传递 null
还将重置 onSeekPoint()
回调的字节计数器。)