7.2.5 获取视频流
NetStream类通过NetConnection打开一个单向流量通道。 使用NetStream类执行以下操作:
- 调用NetStream.play()从本地磁盘,Web服务器或Flash Media Server播放媒体文件。
- 调用NetStream.publish()将视频,音频和数据流发布到Flash Media Server。
- 调用NetStream.send()将数据消息发送到所有订阅客户端。
- 调用NetStream.send()向实时流添加元数据。
- 调用NetStream.appendBytes()将ByteArray数据传递给NetStream。
注意:不能通过同一 NetStream 对象播放和发布流。
我们可以直接通过ActionScript我们可以通过摄像头,麦克风和流媒体数据通过网络捕获素材和声音到RTMP服务器:
cam = Camera.getCamera();
ns = new NetStream(nc);
ns.attachCamera(cam);
ns.publish(name, "live");
Adobe AIR和Flash Player 9.0.115.0和更高版本支持从标准MPEG-4容器格式派生的文件。 如果包含H.264视频和/或HEAAC v2编码音频,这些文件包括F4V,MP4,M4A,MOV,MP4V,3GP和3G2。 H.264比Sorenson或On2中的相同编码配置文件以更低的比特率提供更高质量的视频。 AAC是MPEG-4视频标准中定义的标准音频格式。 HE-AAC v2是AAC的扩展,使用带通复制(SBR)和参数立体(PS)技术来提高低码率下的编码效率。
有关支持的编解码器和文件格式的信息,请参阅:
- 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 开放规范文档)
从 Flash Media Server 流、渐进式 F4V 文件或渐进式 FLV 文件中接收数据:
Flash Media Server,F4V文件和FLV文件可以在流式传输或播放期间发送包含特定数据点数据的事件对象。在播放过程中,您可以使用两种方法处理来自数据流或FLV文件的数据:
将客户端属性与事件处理程序关联以接收数据对象。使用NetStream.client属性来分配对象来调用特定的数据处理函数。分配给NetStream.client属性的对象可以侦听以下数据点:
- onCuePoint()
- onImageData()
- onMetaData()
- onPlayStatus()
- onSeekPoint()
- onTextData()
- onXMPData()
在这些函数中编写过程来处理播放过程中从流中返回的数据对象。有关更多信息,请参阅NetStream.client属性。 将客户端属性与NetStream类的子类相关联,并写入事件处理程序以接收数据对象。 NetStream是一个密封的类,也就是说,不能在运行时向NetStream对象添加属性或方法。但是,您可以创建NetStream的子类并定义您的事件处理程序。您也可以使这个子类动态并将事件处理程序添加到子类的实例。 在使用对象复制,直接路由或发布API之前,请等待接收到NetGroup.Neighbor.Connect事件。
注意:要通过音频文件(如mp3文件)发送数据,请使用Sound类将音频文件与Sound对象相关联。 然后使用Sound.id3属性读取声音文件中的元数据。