| 试论基于RTP协议和MPEG-4的流媒体 (下) |
|
| | |
慧聪网 2005年3月14日13时49分 信息来源:西部广播电视
|
|
|
接上篇:试论基于RTP协议和MPEG-4的流媒体(上)
4、系统实现
本系统由3个部分构成:压缩编码、流媒体服务器和客户端播放软件构成。
4、1 压缩编码
压缩编码部分采用optibase公司的MPEG-4MovieMaker400实时编码器,基于PCI视频编码平台的MPEGMovieMaker400使用BSP-15芯片Optibase视频编码运算法则和音频软件编码,它在低码流下提供高质量的视频传输。一个MPEGMovieMaker400编码卡有能力去同时编码两路MPEG-4ISMA,而且每一路可以按3种不同的编码流传输,在同一PC机中最多可插入6块MPEGMovieMaker400编码卡且从12个不同的源提供36个编码流的输出,为各种应用程序提供了广阔的编码容量和应用前景,另外只需使用板卡附带提供的SDK就可对其进行进一步的设计和实现。在MPEG-4MovieMaker400实时编码器中要通过RTP传输MPEG-4音视频流,因此需要对MPEG-4音视频数据进行打包,加上时间、同步等信息。由于在MPEG-4中是对每个VOP单独进行编解码的,因此以VOP为单位进行打包既提高了效率又充分利用了MPEG-4的编码特性。另外为了不造成IP碎片,包长必须不超过该网络路径的MTU(MaxiumTransitUnit)。考虑到传输的高效性和丢包的鲁棒性,取包长为当前VOP大小与路径MTU值的较小值,采用如下组包机制:若当前VOP能放入单个RTP包,就把此VOP单独放入一个RTP包中;若放不下,则把VOP分段,放入多个RTP包,此时须把VOP头部信息复制到每个RTP包,以去除包间的相关性,达到丢包的鲁棒性;为减小包数,降低开销,一包中能放入多少宏块就尽可能多地放入多少宏块,但即使最后一个包中仍有剩余空间,也不能把另一VOP中的宏块放入此包中。
RTP包封装MPEG-4数据的算法描述如下:
While(MPEG-4数据流结束前)
{If(发现下一个VOP起始码)
{If(当前分段长度≤去除头部字段长度的路径MTU值)
{把此段数据打入RTP包}
else
{把尽可能多的宏块打入RTP包}
}
else
{对剩余数据打包}
}
另外,只要使用插件,目前MPEGMovieMaker400能够传输到一般播放器中如:QuickTime,RealOne以及WindowsMediaPlayers,因此只需客户端安装optibase提供的专门的MPEGMovieMaker400插件,就可以使用多种主流播放器观看本流媒体系统提供的流媒体文件了。
4、2 流媒体服务器
| | |
 |
 |
|
| |
| | |
| |
|
|
|
|
 |
| |
|
|
|
![]() |
|