rtmp协议在p2p流媒体系统中的应用(论文转载)

时间:2021-06-13 06:33:36

    ZHANG Chong, YANG Can,  YANG Ze-quan, HUANG Hui -ze

(South China University of Technology, Guangzhou 51006, China)

rtmp协议被flash广泛应用于对象、视频、、音频的传输上。该协议建立在tcp协议或者轮询http协议上,它就像一个用来装数据包的容器,这些数据既可以是amf格式的数据,也可以是flv中的视频/音频数据。每个单一的链接可以通过不同的通道传输多路网络流,而这些通道中的包都是按照固定大小的包传输的。

原始的rtmp协议能保持一个持久连接,并允许实时通信。而为了保证视频和音频流的顺利传递,同时也保持更大的块信息传输的能力,协议可以将视频和数据分割转化为各种片段。而虽然默认的音频数据类型片段的大小为64byte,视频和大多数其他的数据类型片段的大小为128byte,但片段的大小可以由客户端和服务器之间进行动态的协商谈判,甚至是根据需要完全禁用。而当遇到更长的数据块时,该协议可以使每个片段只携带一个只有一个byte的数据头,从而使开销变得很小。虽然从理论上说,不同的流的片段可能会交叉或者在单一的连接中进行多重传输;然而在实践中,个别片段通常不会交错。恰恰相反,交错和多元传输多是发生在数据包一级,在几个不同的通道上的rtmp数据包以积极的方式进行交错,以确保每个通道都能满足其带宽,延迟,和其他服务质量的要求。包交错的这种方式被视为不可分割的,而在不是片段交错的层面上。

rtmp协议定义了多个通道,用于数据包的发送/接收,并独立运作,互不干预。例如,有一个数据专门用于处理rpc请求和响应,一个用于处理视频流数据,一个用于处理音频流数据,一个附带外控消息(片段大小谈判,诸如此类)等等,所以在一个典型的rtmp传输中,一些通道可能在任何给定时间中同时运行。而当一个rtmp数据被打包,则将生成一个数据包头。这个数据包头部制定了数据将被传送到的通道的id,数据生成的时间戳,数据包的有效载荷大小这是在系统化连接之前,根据当前商议的片段大小进行分组的有效载荷,以及其他一些事项等。数据包头部本身并没有进行分组,且其大小不计入数据包的第一个片段中。换而言之,只有实际的数据包有效载荷数据是进行分组的对象。

在一个更高的层次,rtmp协议的封装mp3和flash视频多媒体流,可以使远程过程调用来使用AMF(action message format)

就目前而言,在服务器方面单纯全面执行rtmp服务的是adobe flash media server,  wowza media server和webORB Integration Server 以上是基于商业性质和封闭源代码开发的,而与此同时,有一种逆向工程开源项目red5,其目的是产生一个由java编写的功能完整的执行文件。截至2008年10月,red5已推出升级版本0.8.0 RC1,尽管该版本仍不是最终版本,但它已经相当完善地执行了大部分功能。

而在客户端方面,其中最知名也是最受欢迎的rtmp客户端是adobe公司的adobe flash player, 它可以通过rtmp服务器实现视频流和音频流的播放。最近,在开源媒体播放器xbmc的svn版本rtmp流已获得初步支持。而饱受欢迎的跨平台*开放源代码的媒体播放器videolan(VLC)也支持rtmp。

2. 基于rtmp协议的p2p流媒体系统结构设计

该系统在传统p2p流媒体系统架构的基础上作了简化,如图1所示。

rtmp协议在p2p流媒体系统中的应用(论文转载)

1)编码器

编码器采用adobe提供的免费编码软件adobe flash media encoder 2.5。通过视频文件或者视频采集设备获取视频信息并转码。转码成vp6编码的视频流,压缩率高,清晰度好。

2)发布源服务器

该程序接收并解释编码器的rtmp数据,将数据缓存并与客户端进行p2p传输。

  该程序启动时会在目录服务器上注册一个频道,为其他接入该频道的用户提供一手数据。发布源程序在传输过程中与其他节点的作用相同,但是在节点获取策略上会尽量减少发布源程序的带宽占用,在网络上不缺失数据的情况下使发布程序留有较大的带宽。

3)目录服务器

这是整个系统的核心部分,支配各节点间的通信。p4p思想的节点选取策略就是在这一部分实现的。目录服务器根据节点的IP在IP库中查询,按照运营商类型>地域>带宽能力的基本原则进行节点分配,从而解决传统p2p随机选取节点所造成的骨干网络压力过大的问题,提高传输效率,维持系统稳定高效的运行。该程序链接着所有的节点,因此,即时系统消息与广告也是通过这一程序传递给每个客户端的;并且,广告的投放也是基于p2p传输的。

4)客户端

与大多数同类软件相同,该部分负责p2p流媒体传输,对流媒体数据进行解码播放。不同的是,该部分的p2p传输在后台运行,前端则是以Flash的形式展现的,借助flash的强大设计能力,极大地增强了客户端界面的交互性,可用性。

并且,由于分离了flash与actionScript脚本,即使没有编程基础的用户也可以设计自己的界面。

5) 运营支撑系统

运营支撑系统掌握着整个系统的运行状态,除了客户端,它可以控制系统中的任何一个程序。并且还包含许多附加功能模块:

访问统计模块。统计用户的访问情况,可以看到最近一段时间用户在各个时段,各个频道的点击量,从而调整节目的时间表,提高用户的满意度。

频道信息管理模块。管理各个频道的相关信息,包括简介、截图、码率、运行时间等。

       节目预告模块。对于直播的电视频道,通过网络自动采集响应的节目预告信息,并提供给客户端使用。

3  基于RTMP协议的p2p流媒体系统特色

3.1 rtmp 协议,flash player 与 p2p 传输技术的结合

前面已经介绍了rtmp协议在高效传输视频、音频和数据方面的不俗表现,以及p2p在流媒体服务方面的优势,因此该p2p流媒体系统将这两者结合,以flash作为解码器实现高清性与高效性并重的效果。

据统计,adobe flash player 在 97%的个人电脑中均有安装,所以adobe flash player无疑地成为本系统客户端播放插件的首选。

  但是由于安全性限制, flash player 仅能够与fms (Flash Media Server)通信,并不能实现p2p传输。因此需要额外编写一个客户端程序,该程序在客户端实现简单的FMS功能,并且实现p2p传输。

    flash media server 提供了丰富的rtmp服务,然而在流媒体播放方面常用的功能并不多。因此,在对RTMP有了深入了解之后,该程序的编写难度并不大。

   众所周知,目前国内的p2p流媒体技术已经被广泛应用在网络上,比如pplive,qqlive,ppstream等,但由于采用的编码方式的限制,能够提供的高清视频服务并不多。因为该系统的研究重点之一是在现有技术基础上,实现为用户提供更为高清的视频服务,所以flash成为一个不错的选择。 flash提供了比wmv9,rv9,h.264以及quicktime mpeg-4更高的画面质量,并且占用更低的带宽。而且在流媒体编码方面,flash采用的是on2vp6,其性能优于目前流行的wmv9,rv9,h264等编码技术。

3.2   flash技术带来的其他有点

   当前国内外的p2p流媒体产品众多,但大多是基于directshow或wmp、real等标准控件实现的。而采用flash这一跨平台的标准控件,极大的减轻了跨平台的难度,使得大多数平台的用户都能使用该软件,更好的实现系统的兼容性;甚至是在手机上,利用flash lite技术,使用户在手机上也能观看到高清、高效的流媒体视频。

   借助flash强大的界面表现能力,还可以制作交互性极强的客户端界面。并且对于有一定flash基础的用户,可以开发属于自己的播放界面。

4. 结束语

 p2p技术与流媒体技术结合的产业化将具有很强的市场潜力和竞争力,有着广阔的发展前景。目前传统语音业务相对饱和,单纯的数据业务又缺乏足够的吸引力,如果能够将这两种或更多的业务相互捆绑,将会为企业创造新的利润增长点、提高用户的忠诚度,降低用户离网率。据相关介绍,提供3种业务捆绑比仅提供单项业务可以降低50%的离网率,比提供两项业务捆绑降低25%离网率。

在此前提下,本研究成果利用rtmp协议以及其他流媒体技术,可以在多平台为用户提供高清在线视频,市场适用范围比较广泛,有广阔的应用前景以及商业、新闻媒体、教育发展空间。可广泛应用于娱乐、远程培训、远程教育等互联网信息服务的方方面面。还可以广泛应用于视频会议,移动网络系统的开发,具有巨大的应用潜力。潜在的客户群体包括电信、广播、校园网、企业、手机用户等;迎合新一代媒体发展趋势、满足不断扩大的用户需求和利用网络急剧膨胀的信息资源;其次,由于其交互性优异的界面,可吸引更多自主意识以及自我创新能力较强的年轻一代的使用。