H.264/ACC音视频编码流的RTP/RTSP传输实现(一)

H.264/ACC音视频编码流的RTP/RTSP传输实现(1)

目标:
  实现一个用于H.264/ACC音视频编码流的RTP/RTSP传输的简单服务器,主要通过此过程学习基于RTP的NAL、ADTS码流封装技术和基于RTSP的视频交互控制技术。完整系统应该包括服务器和客户端两个部分,其中服务器负责接收客户端请求、封包以及发送音视频数据,客户端负责发送请求和接收视频数据。分别在Windows平台上和Android平台上进行网络传输实体测试,通过客户端网络流抓包和播放器播放对系统进行进一步验证。
  
简介:
  随着互联网和移动通信的飞速发展,H.264凭借其突出的编码效率和网络兼容性在视频会议、可视电话、远程监控、数字电视等各个方面[[[] 樊姗. 基于 RTP 的 H. 264 视频传输技术的研究 [D]. 山东大学, 2008]]得到了广泛的应用,被视为最具开发潜力的视频压缩技术之一。H.264提供数据包编码,有利于将数据包在网络中传输,支持流媒体服务应用;对不同应用的时延要求具有灵活的适应性;编码和解码的复杂度具有扩展性。H.264从设计上把视频编码和传输分开,形成两个层次:视频编码层(VCL)和网络提取层(NAL)[[[] 陈翼平. 数字有机体流媒体客户端 H. 264 文件重组研究与实现[D]. 电子科技大学, 2009]]。VCL提供高质量的视频压缩,NAL对压缩好的数据进行传输封装,提供了良好的网络适应性。
  由于视频流的数据传输量极大,受到网络传输质量的限制,虽然H.264提供了良好的网络适应性,但是仍然需要一种协议机制来保证其可靠传输。要实现在网络中进行有效和高质量的传输,需要对视频流的实时性、连续性和丢包率进行严格控制。针对视频流传输的这些特点,Internet专家任务组IETF于1996年,制定了实时传输协议/实时传输控制协议(Real-time Transport Protocol/Real-time Transport Control Protocol)协议族。随着RTP协议族的普及和H.264编码技术的广泛应用,IETF还制定了针对H.264标准的RTP封装协议RFC3984和RTP补充控制协议RTSP。因此,根据这些协议,针对不同的网络媒介和网络状况,对H.264视频流进行打包传输及控制,将为其网络应用提供良好保证。同时,随着流媒体技术的不断发展,基于RTP/RTCP/RTSP的视频打包及传输方法的研究和应用将会变得越来越有意义。
  鉴于目前Internet 网络带宽与视频庞大的数据量、实时传输特性之间存在的矛盾,引发了人们对于如何保证Internet网络上视频实时传输QoS问题的思考,主要集中表现在以下几个方面
1)视频数据的处理
  与传统Internet上的文件传输以及web浏览等应用不同,多媒体应用不再局限于简单的文字和图形,而是逐渐过渡到音视频(A/V)等媒体格式,与此同时数据量也随之大幅增加。日益增加的视频数据量与有限的网络带宽形成了流媒体发展的主要矛盾,对于一些实时性要求比较高的领域,这种矛盾表现得尤为突出。所以,选择一种合适的视频压缩方法,对是视频数据进行有效处理,以降低宽带占有率显得极为重要。在视频传输技术的发展过程中,H.264凭借高编码效率和良好的网络兼容性,成为视频传输数据编码的不二选择。
2)网络传输协议的选择
  由于视频流的数据传输量极大,受到网络传输质量的限制,会出现延时,抖动等现象。虽然H.264提供了良好的网络适应性,但是要实现在网络中进行有效和高质量的传输,需要对视频流的实时性、连续性和丢包率进行严格控制。因此,必须选择一种适合多媒体传输的实时传输协议,以降低延迟、减少抖动、丢包等现象,从而改善视频实时传输QoS。
  针对流媒体视频流传输的特点,Internet专家任务组IETF于1996年,制定了实时传输协议/实时传输控制协议(Real-time Transport Protocol/Real-time Transport Control Protocol)协议族。随着RTP协议族的普及和H.264编码技术的广泛应用,IETF还制定了针对H.264标准的RTP封装协议RFC3984。因此,根据RFC3984,针对不同的网络媒介和网络状况,对H.264视频流进行打包,将为其网络应用提供良好保证。同时,随着流媒体技术的不断发展,基于RTP/RTCP的视频方法研究和应用将会变得越来越有意义。
  媒体技术不仅涉及大量的数据传输,而且要求满足用户对实时观赏和互动方式控制的需要。网络的宽带化改造在不断进行,因而在容量上可以满足多数流媒体业务的需要,而实时性是下一代网络应用的一个重要发展方向,它要求传输的延时小、丢包率低。实时性应用特点使得受到重传机制、拥塞控制机制等限制的TCP 协议无法被用于传输实时多媒体数据。为了满足实时性需求,出现了实时传输协议(RTP )、实时传输控制协议(RTCP)和实时流协议(RTSP)等流媒体协议。RTP是针对Internet上多媒体数据流的一个传输协议。可以实现一对一或一对多的传输情况。