本文转自:http://blog.51cto.com/zhangjunhd/25481
1.流媒体( Streaming Media)
1.1流媒体概念
流媒体技术是网络技术和多媒体技术发展到一定阶段的产物。术语流媒体既可以指在网上传输连续时基媒体的流式技术,也可以指使用流式技术的连续时基媒体本身。在网上传输音频、视频等多媒体信息目前主要有两种方式:下载和流式传输。采用下载方式,用户需要先下载整个媒体文件,然后才能进行播放。由于网络带宽的限制,下载常常要花很长时间,所以这种处理方式延迟很大。而流媒体实现的关键技术是流式传输。传输之前首先对多媒体进行预处理(降低质量和高效压缩) ,然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输方式,用户不必像采用下载方式那样要等到整个文件全部下载完毕,而是只需经过几秒到几十秒的启动延时即可在客户端进行播放和观看。此时媒体文件的剩余部分将在后台继续下载。与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。使用流式传输的另一个好处是使传输那些事先不知道或无法知道大小的媒体数据(如网上直播、视频会议等) 成为可能。
到目前为止,Internet 上使用较多的流式视频格式主要有以下三种:RealNetworks 公司的RealMedia ,Apple 公司的QuickTime 以及Microsoft 公司的Advanced Streaming Format (ASF) 。

1.2支持流媒体的协议
多媒体应用的一个显著特点是数据量大,并且许多应用对实时性要求比较高。传统的TCP 协议是一个面向连接的协议,它的重传机制和拥塞控制机制都是不适用于实时多媒体传输的。RTP 是一个应用型的传输层协议,它并不提供任何传输可靠性的保证和流量的拥塞控制机制。RTP 位于UDP(User Datagram Protocol) 之上。UDP 虽然没有TCP 那么可靠,并且无法保证实时业务的服务质量,需要RTCP 实时监控数据传输和服务质量。但是,由于UDP 的传输时延低于TCP ,能与音频和视频很好地配合。因此,在实际应用中,RTP/ RTCP/ UDP 用于音频/ 视频媒体,而TCP 用于数据和控制信令的传输。目前,支持流媒体传输的协议主要有实时传输协议RTP( Real-Time Transport Protocol) 、实时传输控制协议RTCP(Real-Time Transport Control Protocol) 和实时流协议RTSP(Real-Time Streaming Protocol) 等。下面分别对这三种协议作简要介绍。流媒体协议栈如图1 所示。
2.实时传输协议RTP(Real-Time Transport Protocol)
RTP是针对Internet上多媒体数据流的一个传输协议, 由IETF(Internet工程任务组)作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP或ATM等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。

2.1 RTP工作机制
威胁多媒体数据传输的一个尖锐的问题就是不可预料数据到达时间。但是流媒体的传输是需要数据的适时的到达用以播放和回放。rtp协议就是提供了时间标签,序列号以及其它的结构用于控制适时数据的流放。在流的概念中”时间标签”是最重要的信息。发送端依照即时的采样在数据包里隐蔽的设置了时间标签。在接受端收到数据包后,就依照时间标签按照正确的速率恢复成原始的适时的数据。不同的媒体格式调时属性是不一样的。但是rtp本身并不负责同步,rtp只是传输层协议,为了简化运输层处理,提高该层的效率。将部分运输层协议功能(比如流量控制)上移到应用层完成。同步就是属于应用层协议完成的。它没有运输层协议的完整功能,不提供任何机制来保证实时地传输数据,不支持资源预留,也不保证服务质量。rtp报文甚至不包括长度和报文边界的描述。同时rtp协议的数据报文和控制报文的使用相邻的不同端口,这样大大提高了协议的灵活性和处理的简单性。
rtp协议和udp二者共同完成运输层协议功能。udp协议只是传输数据包,不管数据包传输的时间顺序。 rtp的协议数据单元是用udp分组来承载的。在承载rtp数据包的时候,有时候一帧数据被分割成几个包具有相同的时间标签,则可以知道时间标签并不是必须的。而udp的多路复用让rtp协议利用支持显式的多点投递,可以满足多媒体会话的需求。
rtp协议虽然是传输层协议但是它没有作为osi体系结构中单独的一层来实现。rtp协议通常根据一个具体的应用来提供服务,rtp只提供协议框架,开发者可以根据应用的具体要求对协议进行充分的扩展。

2.2 RTP协议的报文结构
RTP头格式如图2所示:
开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。各段含义如下:
①版本(V)
2位,标识RTP版本。

②填充标识(P)
1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。填充的最后一个八进制包含应该忽略的八进制计数。某些加密算法需要固定大小的填充字,或为在底层协议数据单元中携带几个RTP包。

③扩展(X)
1位,如设置扩展位,固定头后跟一个头扩展。

④CSRC计数(CC)
4位,CSRC计数包括紧接在固定头后CSRC标识符个数。

⑤标记(M)
1位,标记解释由设置定义,目的在于允许重要事件在包流中标记出来。设置可定义其他标示位,或通过改变位数量来指定没有标记位。

⑥载荷类型(PT)
7位,记录后面资料使用哪种 Codec , receiver 端找出相应的 decoder 解碼出來。

常用 types:

Payload Type Codec
0 PCM μ -Law
8 PCM-A Law
9 G..722 audio codec
4 G..723 audio codec
15 G..728 audio codec
18 G..729 audio codec
34 G..763 audio codec
31 G..761 audio codec

⑦系列号
16位,系列号随每个RTP数据包而增加1,由接收者用来探测包损失。系列号初值是随机的,使对加密的文本攻击更加困难。

⑧时标
32位,时标反映RTP数据包中第一个八进制数的采样时刻,采样时刻必须从单调、线性增加的时钟导出,以允许同步与抖动计算。时标可以让receiver端知道在正确的时间将资料播放出来。

由上图可知,如果只有系列号,并不能完整按照顺序的将data播放出来,因为如果data中间有一段是没有资料的,只有系列号的话会造成错误,需搭配上让它知道在哪个时间将data正确播放出来,如此我们才能播放出正确无误的信息。

⑨SSRC
32位,SSRC段标识同步源。此标识不是随机选择的,目的在于使同一RTP包连接中没有两个同步源有相同的SSRC标识。尽管多个源选择同一个标识的概率很低,所有RTP实现都必须探测并解决冲突。如源改变源传输地址,也必须选择一个新SSRC标识以避免插入成环行源。

⑩CSRC列表
0到15项,每项32位。CSRC列表表示包内的对载荷起作用的源。标识数量由CC段给出。如超出15个作用源,也仅标识15个。CSRC标识由混合器插入,采用作用源的SSRC标识。

3.实时传输控制协议RTCP(Real-Time Transport Control Protocol)
RTCP负责管理传输质量在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。

3.1 RTCP工作机制
当应用程序开始一个rtp会话时将使用两个端口:一个给rtp,一个给rtcp。rtp本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠rtcp提供这些服务。在rtp的会话之间周期的发放一些rtcp包以用来传监听服务质量和交换会话用户信息等功能。rtcp包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。rtp和rtcp配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。根据用户间的数据传输反馈信息,可以制定流量控制的策略,而会话用户信息的交互,可以制定会话控制的策略。

3.2 RTCP数据报
在RTCP通信控制中,RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型:
①SR:发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。
②RR:接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。
③SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
④BYE:通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。
⑤APP:由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。

4.资源预订协议RSVP (Resorce Reservation Protocol)
由于音频和视频数据流比传统数据对网络的延时更敏感,要在网络中传输高质量的音频、视频信息,除带宽要求之外,还需其他更多的条件。RSVP是Internet上的资源预订协议,使用RSVP预留部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。

5.参考资料
[1]蒋爱权,流媒体技术的Java实现,计算机应用研究2002,10。
[2]吴国勇,网络视频流媒体技术与应用,北京邮电大学出版社,2001。
[3]台湾国立中央大学电机工程系通讯专题报告VOIP

RTP与RTCP协议介绍相关推荐

  1. LIVE555 RTSP RTP/RTCP协议介绍

    LIVE555  RTSP.RTP/RTCP协议介绍 一.概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与H ...

  2. 网络流媒体--RTP和RTCP协议

    1.RTP和RTCP协议简介 RTP全名是Real-time Transport Protocol(实时传输协议)提供带有实时特性的端对端数据传输服务,RTP 原先的设计是用来满足多参与者的多媒体会议 ...

  3. RTSP、RTP、RTCP协议简介

    什么是RTSP RTSP(Real Time Streaming Protocol)是早期常用的流媒体协议,它用来建立客户端与服务器之间的会话,客户端发布播放暂停等命令,协议由RealNetworks ...

  4. RTP/RTCP协议介绍

    1流媒体协议 当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输. 下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件.流式传输是指传输之前首先对多媒体进行预处 ...

  5. 流媒体服务器开发笔记(2)--RTCP协议介绍

    http://blog.sina.com.cn/s/blog_53061af00100o2no.html ----------------------------------------------- ...

  6. RTP 与 RTCP 协议

    实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据.应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务:这两种协议都提 ...

  7. sip篇——SDP、RTP、RTCP协议

    sip作为互联网中的一个网络会话协议,管理整个会话过程,自然也支持过程中需要的一些网络传输协议.sip是应用层协议,想要在网络中进行信息传递,就避免不了与网络中各层的协议产生关联,用户代理发送的请求或 ...

  8. RTP与RTCP协议简述

    随着多媒体网络应用的发展,针对网络多媒体的通用.实时交互式应用的传输协议--实时传输协议(Real-Transport Protocol,RTP)与实时传输控制协议(Real-Transport Co ...

  9. RTP/RTSP/RTCP 协议详解

    概念: RTP英文名是Real-Time Stream Protocol,顾名思义是一种实时性很高的协议.这种协议和http协议很类似,都是纯文本来发送消息的,不同的是rtp是有状态的,http是没有 ...

最新文章

  1. 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
  2. 全球科技大会鸿蒙,华为开发者大会:全球瞩目的“鸿蒙”面子和里子大格局
  3. Transformer升级之路:Sinusoidal位置编码追根溯源
  4. navicat连接mysql报10061错
  5. 中关村-DIY电子书之Nook2 Root 完全操作手册
  6. windows 2003 复制大文件提示系统资源不足的官方处理方法
  7. php 126 发邮件,解析php中用PHPMailer来发送邮件的示例(126.com的例子)
  8. 第三季-第27课-Shell脚本高级编程
  9. 【Linux实验】LINUX系统的文件操作命令
  10. 论文解读:Prediction of Protein–Protein Interaction Sites Using Convolutional Neural Network
  11. Spring Boot之Spring-Data-JPA
  12. Android 内核源码编译记录
  13. TPC-C和TPC-H
  14. harmonyos1.0.1,华为正式发布鸿蒙系统HarmonyOS 1.0
  15. Android GPS定位记录发送功能
  16. 手把手教你使用微软官方文件免费恢复神器Windows File Recovery恢复文件
  17. Object的notify和notifyAll方法的区别
  18. jsp的内置对象有哪些,四大作用域有哪些??
  19. AD17报错:InvalidParameter Exception Occurred In Copy
  20. 用html制作表白网站制作 超炫酷的七夕情人节表白网页代码

热门文章

  1. scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
  2. 源码安装libjpeg-turbo1.2.1,无root权限
  3. centos7静默搭建oracle11g,Linux静默安装Oracle方法(centos7+oracle11g)
  4. nodejs 图片处理模块 rotate_学会Pillow再也不用PS啦——Python图像处理库Pillow入门!...
  5. 1048 Find Coins
  6. Apollo2.5摄像头安装
  7. 矩阵学习摘记,欢迎指正
  8. 元素上下左右居中的几种方法
  9. 将tomcat添加到服务中
  10. No.7 nginx、nfs、集群