试论基于RTP协议和MPEG-4的流媒体(下)

来源:互联网 发布:淘宝上卖坚果怎么样 编辑:程序博客网 时间:2024/05/16 17:41

 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插件,就可以使用多种主流播放器观看本流媒体系统提供的流媒体文件了。

原创粉丝点击