flash直播

2019-12-05 11:38:05 浏览数 (1)

本文作者:IMWeb ninawu 原文出处:IMWeb社区 未经同意,禁止转载

接触了一段时间的flash直播,无论是腾讯课堂‘数据生成模式’实现的直播还是第三方直播任务tcplayer通过拉流地址实现的直播,都存在一定的延时和首帧慢的情况。为了能更好的做好音视频监控和问题定位,便想自己实现一套flash直播简单的demo,在通过改变上行的带宽,码率,帧率,gop大小等信息来观察延时和首帧的情况。

实现flash直播需要三个重要的类,netconnection,netstream和video。 NetConnection 类在客户端和服务器之间创建双向连接。客户端可以是 Flash Player 或 AIR 应用程序。服务器可以是 Web 服务器、Flash Media Server、运行 Flash Remoting 的应用程序服务器或 Adobe Stratus服务。调用 NetConnection.connect() 以建立连接。使用 NetStream 通过该连接发送媒体流和数据

调用 NetConnection.connect() 会执行下列操作:

• 传递“null”会从本地文件系统或 Web 服务器播放视频和 MP3 文件。

• 传递“http”URL 可连接到运行 Flash Remoting 的应用程序服务器。可使用 NetServices 类通过 NetConnection 对象调用应用程序服务器函数,并返回结果。有关详细信息,请参阅 Flash Remoting 文档。

• 传递“rtmp/e/s”URL 可连接到 Flash Media Server 应用程序。

• 传递“rtmfp”URL 会为 RTMFP 客户端服务器、对等和 IP 多播通信创建双向网络端点。

• 传递字符串“rtmfp:”可为 RTMFP IP 多播通信创建无服务器的双向网络端点。 NetStream 类通过 NetConnection 打开了一个单向流通道。

• 调用 NetStream.play(),从本地磁盘、Web 服务器或 Flash Media Server 播放媒体文件。

• 调用 NetStream.appendBytes(),将 ByteArray 数据传入 NetStream。

代码语言:javascript复制
         protected function onProgress(e:ProgressEvent):void{         
  if(this._downLoadState==0)         
    this._downLoadState=1;         
     var tem:ByteArray=new ByteArray();         
     tem.endian=this._urlLoader.endian;         
     this._urlLoader.readBytes(tem);         
     this._ns.appendBytes(tem);         
}  

Video 类在应用程序中显示实时视频或录制视频,而无需在 SWF 文件中嵌入视频

•调用video.attachNetStream()指定要在应用程序中 Video 对象的边界内显示的视频流

0 人点赞