图2。6 RTMP协议中消息块报文结构图
3 消息分块文献综述
在消息被拆分成几个消息块的这一过程中,首先,要把消息负载部分(Message Body)拆分成固定大小的数据块(基本的默认大小是128字节,最后的数据块可小于该固定长度),并且在首部的位置加上消息块首部(Chunk Header),这样就组成了相应的消息块。消息分块的拆分过程如图2。7所示,消息的大小为307字节,被拆分成两个消息块,前一个是128字节的,最后一个少于128字节。
图 2。7 RTMP消息分块过程图
2。2。3 基于RTMP协议的流媒体播放过程
在应用RTMP协议传输媒体数据信息的过程中,首先,把发送端的媒体数据封装成消息,然后将消息分割成几个消息块,最后,再将分割后的消息块在TCP协议的方式下发送出去。通过TCP协议的方式发送出去的数据在接收端被接收到后,首先,会将接收到的几个消息块重新组合成为消息,然后,消息再经过解封装处理,就能够将媒体数据原原本本地恢复出来。
在流媒体播放的过程中,RTMP协议在应用时包含两个关键步骤:首先,要创建一个网络连接(Net Connection);其次,要创建一个网络流(Net Stream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连接关系。网络流是发送多媒体数据信息的通道。由于网络连接本身就能够建立多条网络流,所以在服务器和客户端之间只需要建立一个网络连接。要播放一个基于RTMP协议的流媒体需要经过以下几个步骤:(1)握手;(2)创建连接;(3)创建流;(4)播放。握手阶段是基于RTMP协议的连接的开始。建立连接阶段是指建立服务器和客户端之间的“网络连接”;建立流阶段是指建立服务器和客户端之间的“网络流”;播放阶段是指传输音/视频数据。图2。8详细展示了它们之间的连接关系:
图2。8 基于RTMP协议的网络流和网络连接图
2。2。4 RTMP协议的优势
流媒体服务商之所以会在网络电视台数量激增的时代背景下,在众多的流媒体服务的应用层协议中将RTMP协议当作首选,其中最主要优势有以下几点:
(1)媒体传输质量得到了保证
RTMP在传输层使用了TCP协议,使得多媒体数据在广域网传输过程中减少了多媒体数据丢包等因素对多媒体质量造成的损失。另外,在封装成FLV封装格式后,RTMP协议传输过程中使用的H.264视频编码方式可以在低码率的状态下显示相对清晰的画面,这一点,对于众多网络带宽较低的用户而言是十分有利的。以上两点就是RTMP协议之所以可以高效地保证多媒体传输的质量,使用户能够在低带宽下观看高质量的多媒体的主要原因。
(2)用户不需要安装客户端程序
一般情况下观看流媒体往往需要得到相应的客户端软件(或者插件)的支持,这就要求客户在观看视频前需要经过复杂的安装客户端的步骤,而且低带宽下漫长等待的时间可能让客户感到厌烦。现如今,利用RTMP协议提供的流媒体服务,极大地优化化了客户操作的复杂度、降低了客户等待视频播放的时间。主要原因是支持RTMP协议的所有的流媒体客户端都能够生成一个普通的Flash文件,只要所使用的网页浏览器安装过Flash Player的便可以自动下载该文件并且运行它。而Flash Player则是上网浏览视频必备的一个插件。有数据表明,Flash Player在世界上绝大部分网页浏览器上都被安装了。因此,普通的用户无须任何操作,只需要打开网页浏览器,然后再打开所要播放页面,就能够观看流媒体视频。
3 需求分析