1、本 科 毕 业 论 文Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用RTP-based Streaming Media on Linux and the Implementation in DongZhongTong姓 名: 学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:院内指导教师: 院外指导教师: 年 月摘 要流媒体(Streaming Media)是一种以音视频数据流的方式在网络上传输多媒体信息的技术。与传输的多媒体下载不同,流媒体传输具有实时性和连续性的特点。流媒体技术具有十分广泛的应用领域,如在线直播、网络广告、视讯会议、远程教育等。截至到目前,Wi
2、ndows 平台下基于 DirectShow 的流媒体技术已经趋于完善,各种基于流媒体的产品也已投入使用。但是 Linux 平台下,由于开发框架和技术以及开发人员的限制,开发运用相对较少。本文以动中通项目为背景,围绕 Linux 下流媒体程序的设计与实现,重点介绍了 Linux 下平台下开发流媒体程序所设计的相关框架,音视频编解码以及流媒体实时传输协议等相关知识,并讲解了基于上述技术开发的动中通项目流媒体模块的架构与实现。此次完成的动中通项目之 Linux 下流媒体模块,主要应用了 Linux 下的OSS(Open Sound System)和 V4L(Video 4 Linux)框架,G71
3、1 和 MPEG4 编解码协议以及 RTP/RTCP 实时流媒体传输协议,采用 C/S 开发模式,系统架构借鉴 GStreamer 的基于管道和插件的低耦合架构。开发出的流媒体程序话质清晰,视频流畅。完成了预期工作和愿景。关键词:流媒体;MPEG4;IP 组播;实时传输协议IIIAbstractStreaming Media is a kind of technology which transferring multi-media information through the networks in the forms of audio and video. Differing from
4、traditional multi-media downloading, streaming media transmission has real-time and continuous characteristics. Streaming media has a wide application terrain, such as online live broadcasting, network advertising, video program ordering, video meeting, long distance education and so on. Now, Window
5、s platform based on DirectShow streaming media technology is perfected and all kinds of streaming media-based products have also been put into use. But in terms of the Linux platform, due to technology and development framework and restrictions on developers, products are quite few.This paper is bas
6、ed on the project DongZhongTong. It mainly talks about the design and implementation of downstream media program. It focuses on the downstream media framework on Linux platform, audio and video coding and decoding, and realtime downstream media transport protocol.In this Streaming Media module of th
7、e project of DongZhongTong, We use the OSS (Open Sound System) and the V4L (Video 4 Linux) framework on the platform of Linux, G711 and MPEG4 encoding and decoding protocol and RTP / RTCP real-time streaming media transmission protocol , with C / S development model. system architecture reference GS
8、treamer plug-ins based on pipes and low-coupling structure. Develop the quality of streaming media program, then clear and smooth video, and fulfill the expected work and vision.Key Words: Streaming Media;MPEG4 ;IP multicast,;Real Time Transport ProtocolIV目录第一章 绪论 11.1 研究背景 .11.2 流媒体技术现状及发展前景 .21.2.
9、1 流媒体技术的应用现状 21.2.2 流媒体技术的研究现状 31.3 项目背景介绍 .41.4 论文主要工作 .5第二章 核心知识简介 72.1 Linux 下音视频开发框架简介 72.1.1 Open Sound System.72.1.2 Advanced Linux Sound Architecture.82.1.3 Video 4 Linux.92.2 实时流媒体传输协议简介 102.2.1 RTP/RTCP 简介 102.2.2 RTP/RTCP 包格式 112.2.3 RTP/RTCP 实时传输机制 132.2.4 RTP/RTCP 协议栈 JRTP142.2.5 RTSP.15
10、2.3 流媒体编解码主流技术简介 162.3.1 语音编码技术 .162.3.2 视频编码技术 .172.4 IP 组播技术简介 212.4.1 IP 组播的特点 212.4.2 IP 组播的协议 212.4.3 IP 组播的实现 22第三章 Linux 下基于 RTP 的流媒体程序设计 .253.1 系统开发环境 253.1.1 Linux 下程序开发的特点 .253.1.2 流媒体开发环境的搭建 .263.1.3 GTK+/GONME 界面开发简介 273.2 系统架构分析 303.2.1 动中通总体架构 .303.2.2 流媒体模块架构 .313.3 系统主要模块的实现 323.3.1
11、主程序模块 .323.3.2 音频模块 .343.3.3 视频模块 .35第四章 Linux 下基于 RTP 的流媒体程序测试 .39V4.1 测试环境 394.2 测试过程 39第五章 总结和展望 435.1 项目中遇到的主要问题与解决办法 435.2 项目感受及展望 455.2.1 关于 Linux 和开源 .455.2.2 关于流媒体技术 .455.2.3 项目展望 .46参考文献 47致谢 49VIContentsChapter 1 Introduction 11.1 Background.11.2 Development and Research status 21.2.1 Deve
12、lopment status 21.2.2 Research status .31.3 Introduction of DongZhongTong41.4 Work of Paper 5Chapter 2 Core Knowledge Introduction.72.1 Frameworks of Streaming Media .72.1.1 Open Sound System .72.1.2 Advanced Linux Sound Architecture.82.1.3 Video 4 Linux 92.2 Protocols of Streaming Media.102.2.1 Def
13、initions of RTP/RTCP 102.2.2 Formats of RTP/RTCP Packet .112.2.3 Mechanism of RTP/RTCP .132.2.4 Introdcution of JRTP142.2.5 Introduction of RTSP .152.3 Codec of Streaming Media 162.3.1 Audio Codes.162.3.2 Video Codes.172.4 IP Multicast Technology212.4.1 Features of IP Multicast .212.4.2 IP Multicast
14、 Protocol212.4.3 Conditions For Achieving IP Multicast .22Chapter 3 Design of Streaming Media Program253.1 Develop Environment 253.1.1 Features of Linux Platform 253.1.2 Build the Environment .263.1.3 Features of GTK+/GONME.273.2 Structure of the Project .303.2.1 Structure of DongZhongTong 303.2.2 S
15、tructure of Streaming Media Module.313.3 Implementation of Streaming Media Program .323.3.1 Main Program Module .323.3.2 Audio Module 343.3.3 Video Module.35Chapter 4 Test of Streaming Media Program39VII4.1 Test Environment.394.2 Test Process.39Chapter 5 Conclusion and Outlook .435.1 Major Problems
16、of Solutions.435.2 Project Experience and outlook455.2.1 About Linux and Open Source.455.2.2 About Streaming Media .455.2.3 Out look.46Reference.47acknowledgement .49第一章 绪论1第一章 绪论此章节简要介绍了流媒体技术,并就流媒体的应用现状和研究现状做了简短的讨论。之后,就此次论文的背景项目动中通的总体结构作了分析。最后阐述笔者于此篇论文中的主要工作。1.1 研究背景计算机和通信技术飞速发展,改变了传统的信息处理、加工和传播的手段
17、,加快了人类文明进步的步伐。多媒体技术综合了声音、文字、图像、动画和视频等多种交互手段,丰富了信息的表现形式,为人类的生活方式带来了深刻的变革。因特网(Internet)作为一种新的媒体和信息传播方式,目前已经逐步深入到全世界的每一个角落。同广播电视、报纸、杂志等传统媒体一样,Internet 正逐步成为信息的重要来源之一。由于视频信息存储量巨大,使得因特网上实现媒体播放存在一定的技术难度。但是,随着宽带技术的普遍应用,解压缩技术的不断提高,网上的视频播放技术发展非常迅猛。网络通信技术和多媒体技术相结合,产生了流媒体(Streaming Media )的概念。流媒体是指在 Internet 中
18、使用流媒体传输技术传输连续的媒体数据,如:音频、视频或者多媒体文件 1。流式媒体在播放前并不下载整个文件,只将开始部分内容写入内存,流式媒体的数据流随时传送随时播放,只是在一开始时有一些延迟,流媒体实现的关键技术就是流式传输。流媒体是以流式传输技术通过网络传送,在时间上具有连续性的媒体文件。与传统的多媒体相比,流媒体具有如下特点:(1)流媒体的内容是时间上连续的媒体数据(如:视频、音频、动画等) ;(2)流媒体的内容可以不经过转换便能通过网络流式传输;(3)具有较强的实时性要求,较好的用户交互性支持;(4)支持边下载边观看的用户播放模式,缩短了用户的等待时间;(5)客户端接收、处理和回放流媒体
19、文件过程中,文件不在客户端长时间驻留,播放完随即删除,不占用客户端的存储空间;(6)由于流媒体文件不在客户端保存,从而在一定程度上解决了媒体文件的版权保护问题。流媒体技术包括很多方面的技术,主要是指针对音频和视频数据的相关技术。实现流媒体技术主要有两种方法:顺序流式传输和实时流式传输 2。顺序流Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用2式传输服务采用“先下载再播放”的形式,但在网络带宽很低的情况下,下载一部影片需要花费很长的时间;实时流式传输服务无需下载整个影片,支持“边下载边播放”的形式,并且用户可以根据需要拖动滚动条,实现真正的实时流媒体播放。流媒体的适用对象非常
20、广泛,所有拥有网络基础设施或者网络接入能力的公司都有可能利用流媒体来增强他们的业务能力。另外,需要在因特网上传输各种信息的公司也有可能需要流媒体来丰富它们传递的内容。因此,业务提供商以及内容所有者构成了需要流媒体的两大群体。1.2 流媒体技术现状及发展前景1.2.1 流媒体技术的应用现状现在,流媒体已经逐渐发展成为一个朝阳产业。有专家预言,流媒体将成为未来因特网上应用的主流,实现沟通和传播的多向性,使传播不再受到时间和空间的限制。流媒体技术广泛用于新闻出版、证券、娱乐、电子商务、远程培训、视频会议、远程教育、远程医疗等互联网信息服务的方方面面,总结起来有三大应用 3。(1) 网络视频直播。目前
21、,流媒体技术作为第四代媒体技术中的一种,很多大型的新闻娱乐媒体,如中央电视台和一些地方电视台等,都在互联网上提供基于流媒体技术的节目,目前流媒体的视频直播应用突破了网络带宽的限制,实现了在低带宽的环境下的高质量影音传输,其中的智能流技术保证不同连接速率下的用户,使得用户可以随时随地应用流媒体技术在网络上观看多媒体信息。(2) 远程教育。Internet的使用开创了远程教育的里程碑,它促进了远程教育中的教学传递日趋现代化,这种教育形式能跨越校界、区界甚至国界。流媒体技术应用突破传统的远程教育以文本为主、没有声音和视频,解决了教学模式单一、交互性差的问题。教学模式多样化体现在教师的在线直播授课和授
22、课视频观看,学员可以由针对性的选择想要学习的章节和内容,极大的提高了学习的效率节省时间。此外,流媒体技术也使远程教育的交互从单向通信的方式,如通过Email、在线聊天、BBS等。采用流媒体技术,把流式视频、音频加入答疑系统将提高它的完整性和交互能力。流媒体的VOD技术还可以进行交互式第一章 绪论3教学,达到因材施教的目的。像Flash、Shockwave等技术就经常应用到网络教学中。学生可以通过网络共享学习经验。大型企业可以利用基于流媒体技术的远程教育对员工进行培训。(3) 视频点播及电视电话会议视频会议系统指互联网上或者其它数据网络上开展的一种交互式多媒体通信业务。视频会议系统与流媒体技术应
23、用相结合,利用流媒体技术的良好的可访问性、可扩展性和对带宽的有效利用性,实现视频会议内容的广播和录播,并且由于流媒体终端播放软件大多是免费的,因此利用流媒体机制:点对点(unicast)、多址广播(Multicast)和广播(Broadcast)可以很好地满足视频会议的如上需求:首先可以使大量的授权流媒体用户参加到视频会议中,扩大了会议的规模和覆盖面;而且利用流媒体技术的记录功能,视频会议在召开完以后可以实时存储,流媒体用户就可以通过点播的方式来访问会议的内容。1.2.2 流媒体技术的研究现状目前,流媒体技术主要表现在三个方面:分别是编码器(编码技术) 、播放器(播放支持)和流服务器,三者缺一
24、不可。在数据网络上传输流媒体,需要解决从音/视频源的编码/解码、存储,到网络端的媒体服务、媒体流传输,到用户端的播放一系列问题。怎样使较好质量的流媒体实时播放,需要考虑媒体流传输的各个环节。其中,影响传输质量的三个最关键的因素是:编码和压缩的性能、媒体服务器的性能、媒体流传输的质量控制。(1)编码及压缩:流媒体文件需要在网络上实时传输,因此必须考虑传输中数据丢失对解码质量的影响。针对这个问题,采用先进的编码技术,例如错误弹性编码(ErrorResilient Encoding):在编码中通过适当的控制使得发生数据丢失后能够最大限度地减少对质量的影响。此外,媒体流的压缩/编码还需要考虑速率调节的
25、能力,网络的拥塞状况是实时改变的,流媒体的编码应该最大限度适应网络速率的变化。(2) 服务器的性能提高:流媒体应用规模和范围的扩大,流媒体服务器的性能也成为制约流媒体服务扩展能力的重要因素 4。提高服务器的性能包括CPU能力提高,I/O总线带宽和传输速度,存储带宽扩展等。Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用4(3) 媒体流传输的质量控制:由于流媒体传输对网络带宽、延迟、丢失率等都有很高的要求,提高流媒体系统的整体扩展性和降低单个服务器性能要求是未来发展的趋势。此外还有流媒体技术研究还有流媒体传输协议和流媒体文件格式的兼容和压缩的研究上,流媒体在网络上传输需要合适的
26、协议,TCP 需要较多的开销,故不太适合传输实时数据,流媒体一般采用 HTTP/TCP 来传输控制信息,而用RTP/UDP 来传输实时多媒体数据,流媒体中协议有三种:实时传输协议 RTP 与RTCP;实时流协议 RTSP;资源预订协议 RSVP。流媒体文件的格式主要有三类:RealSystem 的 RealMedia 文件格式;微软高级流格式 ASF 简介;QuickTime 电影(Movie)文件格式。针对流媒体传输协议的研究和文件格式的转换上也是当前研究的一个方向。1.3 项目背景介绍动中通系统是一种基于软交换的无线系统,其中的控制信令是通过 SIP 来实现,其项目总体架构如下图所示。 I
27、P Network网关P T T 服务器基站控制台控制台手机注 册 服 务 器有 状 态 代 理 服 务 器预 设 群 配 置 服 务 器优 先 级 和 授 权 控 制 器位 置 服 务 器网关注 册 服 务 器有 状 态 代 理 服 务 器预 设 群 配 置 服 务 器优 先 级 和 授 权 控 制 器位 置 服 务 器路由器固定终端固定终端会议服务器图 1-1:动中通项目总体架构图在此项目中,为了适应在机载、车载、舰载等高速移动环境下的工作要求,满足不同用户的工作需求,该系统采用 340MHz 频段,TDD 的双工方式,第一章 绪论5CDMA 系统的全数字调制解调方式,扩频增益达到 8dB
28、,绕射能力强,具有很强的抗干扰能力,以致网络覆盖范围在 15km 以上 ,终端移动速度可达到 240 km/h。在该网络中服务器大体分为出口服务器和应用服务器两种。出口服务器即SIP 服务器,包括了 SIP 注册服务器、代理服务器和位置服务器,其中我们还自行扩展了预设群配置服务器与优先级和授权控制器两种功能实体,出口服务器的功能就是将 SIP 信令送入 IP 网络中进行传输;应用服务器分为两种:PTT服务器和会议服务器,其中 PTT 服务器是用于实现 PTT 业务;会议服务器是用于实现网络会议功能。本设计是在动中通系统的基础上,引入 IP 组播技术,对动中通系统架构和会议系统模块进行扩展和改进
29、,以满足更大容量的用户要求。动中通系统的运作模式分为会议模式和普通模式,其中这两个模式下实现的主要功能包括语音聊天,视频监控,文本传输,多人对讲等。而流媒体模块处在业务层次之后,对这些基本基本业务功能提供了技术和实现上的支撑。1.4 论文主要工作笔者在本课题中所作的工作是进行 Linux 平台下基于 RTP/RTCP 协议的流媒体技术进行初步的研究和探讨,对其主要功能进行设计和实现。本文所作的具体工作介绍如下:(1) 介绍Linux下音视频开发的主要开发框架,重点介绍了Open Sound System音频开发框架和Video4Linux视频开发框架。(2) 介绍目前主流的音视频编解码技术,主
30、要是G.711和MPEG-4技术,并在系统上实现。(3) 探讨了Linux下流媒体程序的框架设计,在学习借鉴Linux下流媒体开发框架GStreamer的设计思想之后开发出了自己的流媒体框架。(4) 搭建开发环境,并借助Linux下众多的开源项目与开源产品,进行了基于自己框架下的流媒体程序的开发。(5) 最后进行了应用程序的测试和进一步完善。第二章 核心知识简介7第二章 核心知识简介此次完成的动中通项目之 Linux 下流媒体模块,主要应用了 Linux 下的OSS(Open Sound System)和 V4L(Video 4 Linux)框架,G711 和 MPEG4 编解码协议以及 RT
31、P/RTCP 实时流媒体传输协议。下面将就 Linux 下流媒体开发框架、流媒体协议、流媒体编解码以及 IP 组播等进行具体的介绍。2.1 Linux 下音视频开发框架简介2.1.1 Open Sound SystemOSS(Open Sound System)是 unix 平台上一个统一的音频接口,其体系结构以及系统中所处层次如下图所示。应用程序O S S 驱动A P IS O U N D C A R D 硬件平台图 2-1: OSS 体系结构示意图在 OSS 出现以前,每个 Unix 厂商都会提供一个自己专有的 API,用来处理音频。这就意味着为一种 Unix 平台编写的音频处理应用程序,
32、在移植到另外一种 Unix 平台上时,必须要重写。但是,OSS 出现以后情况就大不一样了,只要音频处理应用程序按照 OSS 的 API 来编写,那么在移植到另外一个平台时,只需要重新编译即可。因此,OSS 提供了源代码级的可移植性。同时,很多的 Unix 工作站中,只能提供录音与放音的功能。有了 OSS 后,给这些工作站带来了 MIDI 功能,加上音频流、语音识别/生成、计算机电话(CT) 、JAVA 以及其它的多媒体技术,在 Unix 工作站中,同样可以享受到同Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用8Windows、Macintosh 环境一样的音频世界。OSS
33、还提供了与视频和动画播放同步的音频能力,这对在 Unix 中实现动画、游戏提供了帮助。在 Unix 系统中,所有的设备都被统一成文件,通过对文件的访问方式(首先 open,然后 read/write,同时可以使用 ioctl 读取/设置参数,最后close)来访问设备。2.1.2 Advanced Linux Sound ArchitectureALSA (Advanced Linux Sound Architecture(高级 Linux 声音体系)的缩写) 是为声卡提供驱动的 Linux 内核组件,以替代原先的 OSS(开放声音系统) 。 一部分的目的是支持声卡的自动配置,以及完美的处理系
34、统中的多个声音设备。其体系结构如下图所示。图 2-2: ALSA 体系结构示意图在 OSS 中,主要有以下的几种设备文件:/dev/mixer:访问声卡中内置的 mixer,调整音量大小,选择音源。/dev/sndstat:测试声卡,执行 cat /dev/sndstat 会显示声卡驱动的信息。/dev/dsp 、/dev/dspW、/dev/audio:读这个设备就相当于录音,写这个设备就相当于放音。/dev/dsp 与/dev/audio 之间的区别在于采样的编码不同,/dev/audio 使用 律编码,/dev/dsp 使用 8-bit(无符号)线性编码,/dev/dspW 使用 16-
35、bit(有符号)线形编码。/dev/audio 主要是为了与 SunOS兼容,所以尽量不要使用。第二章 核心知识简介9ALSA 是一个完全开放源代码的音频驱动程序集,除了像 OSS 那样提供了一组内核驱动程序模块之外,ALSA 还专门为简化应用程序的编写提供了相应的函数库,与 OSS 提供的基于 ioctl 的原始编程接口相比,ALSA 函数库使用起来要更加方便一些。利用该函数库,开发人员可以方便快捷的开发出自己的应用程序,细节则留给函数库内部处理。当然 ALSA 也提供了类似于 OSS 的系统接口,不过 ALSA 的开发者建议应用程序开发者使用音频函数库而不是驱动程序的 API。ALSA 官
36、方主页提供以下软件包:alsa-driver:alsa 的驱动程序,2.6 的内核中已经有了。alsa-lib:alsa 库文件,用到 alsa 声音接口的程序(包括 alsa-utils)需要用到。alsa-utils:包含许多可以控制你的声卡的工具。alsa-tools:包含一些声卡的高级设置工具。alsa-fireware:包含某些声卡的固件。alsa-plugins:提供用以创建虚拟设备的插件。alsa-oss:包括 alsa oss 兼容库,对于使用 alsa oss 声音接口的程序很有用。2.1.3 Video 4 LinuxV4L,其全称是 Video4Linux(Video f
37、or Linux) ,是在 Linux 内核中关于视频设备的 API 接口,涉及开关视频设备、采集并处理视频图像信息 5。V4L从 2.1.x 版本的内核中开始出现,其体系结构如下图所示。L i n u x 内核L i n u x A P IV 4 L 模块应用程序图 2-3: Video 4 Linux 体系结构示意图Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用10现在出现 Video4Linux2(Video for Linux 2) ,简称 V4L2。很显然,他是V4L 的改进版,修复了第一代的部分设计 bug。从 2.5.x 开始,V4L2 就被集成到内核里面去了
38、。尽管如此,还是有一部分设备的驱动不支持新版本的 V4L2,所以,有时候我们会看到 V4L 跟 V4L2 同时出现在代码里面。2.2 实时流媒体传输协议简介2.2.1 RTP/RTCP 简介实时传输协议(RTP)是一个 Internet 协议标准,它描述了程序管理多媒体数据实时传输的方式。最初在 Internet 工程任务组(IETF)的请求注解(RFC)1869 中对 RTP 协议进行了描述,RTP 由 IETF 的音视频传输工作组设计,它支持多个地域上分布的参与者的视频会议。RTP 普遍应用于 Internet 的电话应用中。RTP 本身并不保证多媒体数据的实时传输(因为这取决于网络特性)
39、 ,但是,当数据尽最大努力到达后它将提供必要的方法来管理这些数据 6。RTP 包括两个紧密相关的部分:(1) 实时传输协议(RTP) ,传输有实时特性的信息。(2)RTP控制协议(RTCP),监视业务质量和传输对话中成员的信息。RTP 与控制协议(RTCP)配合工作,RTCP 使得大的组播网络能够监视数据传输。监视能使接收器侦测到任何的包丢失,还可以补偿任何的延迟抖动。两个协议都独立于下面的传输层和网络层协议。RTP 头中的信息将告诉接收器如何重建数据,并描述了比特流是如何打包的。通常,RTP 工作于用户数据报协议(UDP)之上,但它也能使用其他的传输协议。会话发起协议(SIP)和H.232
40、都使用 RTP7。当应用程序开始一个 RTP 会话时将使用两个端口:一个给 RTP,另一个给RTCP。RTP 本身并不能为按顺序传送数据包提供可靠的机制,也不提供流量控制或者拥塞控制,它依靠 RTCP 提供这些服务。在 RTP 的会话之间的周期发送一些 RTCP 包用来监听服务质量和交换会话用户信息等功能。RTCP 包中包含已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP 和 RTCP 的配合使用,他们能有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网第二章 核心知识简介11上的实时数据。根据用户间的数据
41、传输反馈信息,可以制定流量控制的策略,而会话用户信息的交互,可以制定会话控制的策略。物理层数据链路层网络层 ( I P R S V P )R T P ( R T C P ) U D P T C P应用层 ( R T S P )传 输 层图 2-4: RTP/RTCP 所处协议栈位置示意图2.2.2 RTP/RTCP 包格式其中 RTP 包由两部分组成:RTP 包头和负载。由于 RTP 具有扩展性,因此包头有固定包头和扩展部分。固定包头有 12 个字节(96 比特) 。由以下部分构成:版本(V):2 比特,此域定义了 RTP 的版本。此协议定义的版本是 2。(值 1被 RTP 草案版本使用,值
42、0 用在最初“vat“语音工具使用的协议中。) 补齐位(P):1 比特,如果补齐位被设置成 1,一个或多个附加的字节会加在包头的最后,附加的最后一个字节放置附加的字节数。补齐是一些加密算法所必需的,在下层网络数据包携带多个 RTP 包时也需要补齐。 扩展位(X):1 比特,如果扩展位被设计成 1,一个头部扩展域会加在 RTP 包头后。CSRC 源数(CC):4 比特,定义了本头部包含的 CSRC 源数目。Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用12标记(M):1 比特,其解释由具体应用所定义,一种应用可不定义标记字段,也可以定义多个标记字段。 负载类型(PT):7 比
43、特,定义了 RTP 负载的格式。顺序号(Sequence Number):16 比特,每发出一个 RTP 包,顺序号加 1,它可以被接收方用来检查包丢失及重组包的顺序。顺序号的初始值是随机的(不可预料的) 。即使源的本身没有被加密,但包流通过 translator 后就被加密,不可预料的顺序号初始值使对加密的攻击变得更加困难。时间戳(timestamp):32 比特,记录 RTP 包中数据开始产生的时钟时间,用于同步和包到达间隔抖动计算。时钟频率和数据格式有关,不能使用系统时钟。对固定速率的音频来说,每次取样时戳时钟增 1。和包序号一样,时戳的开始值也是随机的。如果多个连续的 RTP 包在逻辑
44、上是同时产生的,那么它具有相同的时戳。同步源(SSRC):32 比特,定义 SSRC 的定义符,可以随机选取,但是在同一个 RTP 会话中,不同的 SSRC 应该有不同的 SSRC 值 8。以上是 RTP 包的固定包头,而当几个同步源通过混合器时,混合器会将它们合并,产生新的同步源标记,而流入的同步源会被加入贡献源(CSRC)列表中。贡献源(CSRC)列表:0 到 15 段,每段 32 比特,定义包中的 CSRC,其个数由前面的 CC 字段决定,最多有 15 个 CSRC 可定义,它由 Mixer 用多个 CSRC 定义符插入。 RTCP 包格式和 RTP 数据包类似,RTCP 包周期性地在会
45、话成员之间组播,起着会员活动指示器的作用。常用的 RTCP 包有下列几类:1、SR:源报告包,用于发送和接收活动源的统计信息;2、RR:接收者报告包,用于接收非活动站的统计信息;3、SDES:源描述包,用于报告和站点相关的信息;4、BYE:站点离开系统报告包;5、APP:特殊应用包。RTCP 根据上面说到的几个类型的包来获取当前会议的数据流量,参与者状况,网络状况等信息,提供以下几种功能:(1) 提供数据传输质量的反馈信息,主要通过发送方报告(SR,Sender Report)和接收方报告(RR,Receiver Report)来实现。这些反馈信息与流量控制和拥塞控制密切相关也可以直接用于故障
46、诊断。(2) 对每一个 RTP 信息源,带有一致的传输层标识,称为通用名 第二章 核心知识简介13CNAME(Canonical Name)。当同步源标志 SSRC 在由于冲突而发生改变时 接收方需要 CNAME 标识来区分多个媒体流中给定应用的应用成员。(3) 当前参加成员的动态估计,可以用来计算数据发送速率,并且在成员动态变化时对速率进行动态地调整以合理利用网络资源。(4) 传送最少量的控制信息以保证系统可以容易地扩展成为大规模的松散耦合系统。图 2-5:RTP 包头格式示意图2.2.3 RTP/RTCP 实时传输机制一个音、视频实时传输系统平台包括底层网络和多媒体通信接口层。底层网络是基
47、于没有 QoS 保证的分组交换网络,如企业网和 Internet 网,多媒体通信接口层提供系统的网络互联能力和通用的网络接口。为使传输视频信号时Linux 下基于 RTP 的流媒体技术及在“动中通”系统中的应用14的时延最小,在 UDP 上利用 RTP /RTCP 对媒体(音频和视频)流的封装、媒体流的同步和控制流封装、控制信息的格式,进行媒体流的打包与同步。发送端的音视频编码器输出的数据流经过成帧算法后,形成适合于 RTP 协议格式的封装,递交 RTP 分组处理模块,加上此协议的分组包头,并根据当前的采样时钟打上时间戳、标记顺序号,并给定帧频、分辨率、相应的压缩格式等参数,经多目地址传输来完
48、成。 接收端在实时数据到达后,去掉该层协议的头标,根据应用的端口号向上层递交。 RTP 分组模块处理递交的数据分组,根据其会话标识和序列号进行鉴别,将有效的分组传递给相应的解码缓冲区,实现数据流内部和数据流间的同步。 媒体传输建立的过程中,通过 RTCP 控制分组,将本地的描述信息传达给其它具有相同组播地址的节点,同时接收来自其它节点的描述信息,形成初步的连接状态表,并根据和节点的退出或加入状况,对连接状态表进行维护,从而及时反映当前和节点的连接状况。各节点根据反馈信息来调整数据的编码格式,检测、定位网络故障,监控网络的传输状况,驱动视频编码模块进行响应,提高或降低实时数据的产生速率。 随着节
49、点的加入/退出及当前网络活动的状况,各节点间的数据流和控制流都要进行用户管理。因此必须在 IP 多播成员之间交换一些必要的信息,通过 RTCP 协议包对各节点的信息传送和接收管理。各节点在系统初启时,向约定的 Multicast 地址自动发送一个 SDES 类型的 RTCP 包,将本端点信息通报给所有参与通信的站点。SDES 包中包含通信人姓名、IP 地址、编码标志、端口号和类名等与站点相关的信息。所有站点需同期性地向约定的 Multicast 地址发送一个 SDES 类型的 RTCP 包并当有媒体状态变化时也需立即发送。一方面通报自己仍在通信过程中,另一方面把参与 IP 多播的人员信息及时告知新加入的站点,如果超过规定时间内还未收到某个站点的 SDES 包,则作超时失效处理。如果以后又收到该站信息,则重置相应的记录有效。而退出以前以“BYE”包的形式通报给系统,各站点收到 BYE 包后置相应站点的退出标记。2.2.4 RTP/RTCP 协议栈 JRTP目前流行的几种 RTP 协议栈分别有 jrtplib,librtp,live 和 ortp,在 第二章 核心知识简介15Linux 平台上进行实时传送编程,可以考虑使用这些开放源代码的 RTP 库。此次设计所采用的协议栈是 JRTP,它用 C+编写。用一