7.2.4 NetStream对象
NetStream 类是我们实现对视频流的相关操作的关键部分,当然同样重要的还有NetConnection。
NetStream类在Flash Player或AIR应用程序与Flash Media Server之间或Flash Player或AIR应用程序与本地文件系统之间打开单向流式连接。 NetStream对象是NetConnection对象中的通道。此频道可以使用NetStream.publish()发布流,或订阅发布的流并使用NetStream.play()接收数据。您可以发布或播放实时数据和以前记录的数据。您还可以使用NetStream对象向所有订阅的客户端发送文本消息(请参阅NetStream.send()方法)。
播放外部视频文件比在SWF文件中嵌入视频具有许多优点,例如更好的性能和内存管理以及独立的视频和SWF帧频。
如果文件包含H.264视频或HEAAC v2编码,则Adobe AIR和Flash Player 9.0.115.0_cn及更高版本支持标准MPEG-4容器格式(包括F4V,MP4,M4A,MOV,MP4V,3GP和3G2)音频)。 H.264比Sorenson或On2中的相同编码配置文件以更低的比特率提供更高质量的视频。 HE-AAC v2是AAC的扩展,AAC是MPEG-4视频标准中定义的标准音频格式,它使用带复制(SBR)和参数立体声(PS)技术来提高低位的编码效率率。有关支持的编解码器和文件格式的信息,请参阅 http://www.adobe.com/go/hardware_scaling_cn 和 Flash Media Server 文档。
NetStream类提供的方法和属性可用于跟踪加载和播放文件的进度,并允许用户控制播放(停止或暂停等)。
以下步骤概述了发布实时音频和视频的工作流程:
创建一个 NetConnection 对象。
使用 NetConnection.connect()方法连接到服务器上的应用程序实例。
创建一个 NetStream 对象,以便在连接中创建数据流。
使用NetStream.attachAudio()方法通过流捕获和发送音频,然后使用NetStream.attachCamera()方法捕获并发送视频。
使用NetStream.publish()方法为该流提供唯一的名称,然后使用该流将数据发送到服务器,以便其他用户可以接收数据。 您还可以记录发布数据的时间,以便用户稍后可以播放。
订阅此流的文件将在调用play()时使用传递给publish()的名称,并与发布者调用相同的NetConnection.connect()方法。 他们必须调用Video.attachNetStream()方法来传输视频,然后调用NetStream.play()方法来播放视频。
使用Flash Media Server的关键帧。 创建NetConnection和NetStream对象后,可以使用NetStream.send()将现场音频或视频流的元数据添加到服务器。 元数据可以是诸如视频的高度或宽度,其持续时间,创建者的名字等的信息。 要定义元数据,请使用特殊处理程序名称@setDataFrame作为NetStream.send()的第一个参数。 接收Live Streaming的客户端还需要定义onMetaData事件处理程序以从流中检索元数据; 有关更多信息,请参阅NetStream.send()方法。