基于RTP协议和MPEG-4的流媒体系统分析与实现

来源:互联网 发布:mac上的实用软件 编辑:程序博客网 时间:2024/05/03 12:50
摘要:在简述MPEG-4压缩标准编码特性和RTP/RTCP协议原理的基础上提出了一个适合目前视频点播、组播的RTP流媒体应用方案,该方案使用了optibase公司的MPEG-4MovieMaker400板卡和Apple公司的DARWIN流媒体服务器,采用了MPEG-4音视频传输的RTP组包算法,该算法具有传输的高效性和丢包的鲁棒性。
关键词:MPEG-4RTP/RTCPDARWINMPEG-4MovieMaker400

1引言
        随着互联网的普及和多媒体技术在互联网上的应用,实时传送视频、音频、多媒体动画等媒体文件的技术成为了热点,这种传输技术称为流媒体传输技术。简单地说流媒体传输技术是由专门的流媒体服务器向用户连续、实时地发送声音、影像、动画等多媒体文件,这样用户可以不必等到整个文件全部下载完毕,而只需要经过几秒钟的启动延时就可以了,当这些多媒体数据在客户机上播放时,文件的剩余部分将继续从流媒体服务器下载。
        MPEG-4标准以其高压缩率、高质量、低传输率成为目前网络多媒体传输的主要格式和标准,因此研究基于MPEG-4的实时传输技术对于实现流媒体传输技术是必要和有意义的。另外音视频文件的实时传输要求较低的时延和较小的丢包率,由于TCP的重发机制带来较大的时延,UDP本身又不提供任何Qos保证,因此需要通过实时传输协议(RTP)和实时传输控制协议(RTCP)配合使用提供数据实时传输和Qos服务来满足网络音视频数据实时传输的时延和丢包要求。 

         综上所述,开发基于RTP及MPEG-4的流媒体系统已成为满足日新月异的互联网多媒体技术发展非常重要的一种手段。

2系统原理
2.1 MPEG-4压缩标准
        MPEG-4是1998年12月正式发布的,旨在为视、音频数据的通信、存取与管理提供一个灵活的框架及一套开发的编码工具,它用在64Kbit/s以下的低速率视音频编码十分有效。MPEG-4与MPEG-1、MPEG-2相比,最重要的特征有:

     (1)编码是基于对象的。它把图像和视频分割成不同的对象,对每一个对象的编码形成一个对象码流层,该码流中包含着对象的形状、位置、纹理及其他方面的属性。对一幅图像编码所形成的码流由一系列对象层码流构成,用户可直接对“对象层”进行存取操作,这样就使得操作、控制对象成为可能,而传统的编码都是基于帧的,无法对对象进行操作。

      (2)MPEG-4可根据现场带宽和误码率的客观条件在时域和空域有灵活的可扩展性。时域扩展是在带宽允许时在基本层上的增强层中增加帧率,在带宽窄时在基本层中减少帧率;空域扩展是指对基本层中的图像进行插值,增加或减少空间分辨率,以达到充分利用带宽,使图像质量更好。
        为了实现上面所说的功能,MPEG-4将音视频码流的语法层次分为视频会话VS、视频对象VO、视频对象层VOL和视频对象平面VOP。一个完整的视频序列由若干个VS构成。VO是给定场景中的一些具体对象,是用户能够存取和操作的实体。若干个VO构成一个VS;VOL是表明VO的空间和时间分辨率的一个类型,与空间和时间分级性密切相关。每个VO可有多层VOL;VOP是VO在某一时刻的表象,即某一帧VO,MPEG-4对每个VOP独立进行编解码,如图1所示。图1MPEG-4语法结构

2.2RTP/RTCP协议
       实时传输协议(Real-timeTransportProtocol,PRT)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在1对1(unicast,单播)或者1对多(multicast,多播)的网络环境中实现流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP或者ATM等其它协议。RTP协议的设计目的是提供实时数据传输中的时间戳信息以及各数据流的同步功能。RTP协议提供序列号字段使接受方通过检测收到的分组序列号判断是否有分组丢失,并可重新恢复发送时的分组顺序;提供时间戳字段用于重新建立原始音频、视频的时序,帮助接受方确定数据到达时间的一致性或变化;提供同步源标识符(SSRC)字段,在接收端为包分组从而进行回放。RTP本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由实时传输控制协议RTCP来负责完成。通常RTCP会采用与RTP相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取相关资料,从而能够对服务质量进行控制或者对网络状况进行诊断。
       当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。

3传输模型
        图2是基于RTP的MPEG-4音视频传输模型。MPEG4数据流分别被封装上RTP报头、UDP报头和IP报头,然后IP数据包通过Internet向接收端发送。当发送端收到已被正常编码压缩的MPEG-4码流后,按照RTP数据传输协议的报文格式装入RTP报文的数据负载段,并配置RTP报文头部的时间戳、同步信息、序列号等参数,此时数据报文已被‘流’化了;同时发送端周期性地接收RTCP包,将Qos反馈控制信息发送到视频服务器,服务器利用这些信息动态地改变自身参数设置。接收端收到IP包后先分析RTP包头,判断版本、长度、负载类型等信息的有效性,更新缓冲区的RTP信息,如收到的字节数、视频帧数、包数、序列号数等信息;按照RTP时间戳和包序列号等进行信源同步,整理RTP包顺序,重构视频帧;最后根据负载类型标识进行解码,将数据放入缓存供解码器解码输出;同时接收端根据RTP包中的信息周期性回送包含Qos反馈控制信息的RTCP包到数据发送端以检测发送端和接收端数据的一致性。
        图2基于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流媒体服务器
         DARWIN流媒体服务器是Apple公司向外界提供的一个开放源代码的流媒体服务系统软件,用户可以对其进行功能上的修改和扩充,它是在QuickTimeStreamingServer基础上简化而来的,但具有QuickTimeStreamingServer的主要功能。DARWIN流媒体服务器的整个传输过程为:当服务器收到RTSP请求,它首先产生RTSP请求对象,然后调用特定的功能模块;对于单播服务,客户端向服务器请求视频内容是通过RTSP协议,服务器通过RTSP协议的应答信息将请求的内容以流会话(streamingsession)的形式描述,内容包括数据流包括多少个流、媒体类型和编解码格式。一个流会话由一个或多个数据流组成,如视频流和音频流等。实际的数据流通过RTP协议传递到客户端。更为重要的是,系统提供了基于Java语言的应用程序开发接口,利用该接口可以方便地开发客户端播放程序,而不必使用系统提供的QuickTimePlayer播放器,减轻了客户端对系统的依赖性,让开发人员把Java语言和QucitTime的优势结合起来,开发出功能强大的多媒体处理程序。
        另外流媒体信息的上载、查询等,可采用SQLServer技术的客户/服务器系统数据库结构,数据存放在服务器上,客户端界面作为软件系统的另一部分存在于客户端桌面计算机上,完成显示和应用逻辑。

5结束语
        系统基于optibase公司的MPEG-4MovieMaker400实时编码器和DARWIN流媒体服务器,充分利用带宽而又不引起网络阻塞,具有时延小、丢包率低、传输高效的特点,可广泛应用在远程教育、电子商务、娱乐、科研等各个领域。但由于MPEG-4MovieMaker400实时编码器推出的时间较短,对于它的开发和应用仍有许多值得探索的地方。
 

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 有地皮没房产证怎么办 社保资金被侵吞怎么办? 集体计件手脚慢怎么办 发票当月没用完怎么办 非工业用地怎么办环评 商标注册途中英文错误怎么办 孩子的英文不好怎么办 高盛英文不好怎么办 去美国英文不好怎么办 去越南不会英语怎么办 法斗得了毛囊炎怎么办 头发里有毛囊炎怎么办 笔记本画cad慢怎么办 面试打不出问题怎么办 ai撤销多了怎么办 卖钢材没客户怎么办 手抓饼煎的很硬怎么办 微信朋友圈侵权怎么办 tekla工具栏显示不全怎么办 收银员收到假钱怎么办 世联贷款还不上怎么办 皮肤发黄暗沉怎么办 手机默认竖屏怎么办 手机网络没有了怎么办 新生婴儿不睡觉怎么办 婴儿感冒不睡觉怎么办 小孩不肯吃母乳怎么办 新生儿不会吸奶怎么办 婴儿生病不吃奶怎么办 宝宝积食有痰怎么办 新生儿不肯吸奶怎么办 宝宝不吃妈妈奶怎么办 小孩子晚上咳嗽厉害怎么办 小孩子支气管炎一直咳嗽怎么办 小孩子久咳嗽不好怎么办 羊羔突然不吃奶怎么办 孩子吃奶呛到怎么办 羊产后奶水不足怎么办 奶太急总是呛到怎么办 满月宝宝呛奶怎么办 宝宝吃奶噎到了怎么办