RTP协议栈简介
来源:互联网 发布:c罗职业生涯数据 编辑:程序博客网 时间:2024/06/05 05:47
流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术,本文介绍如何在Linux下利用JRTPLIB进行实时流媒体编程。
一、流媒体简介
由于受网络带宽、计算机处理能力和协议规范等方面的限制,要想从Internet上下载大量的音频和视频数据,无论从下载时间和存储空间上来讲都是不太现实的,而流媒体技术的出现则很好地解决了这一难题。目前实现流媒体传输主要有两种方法:顺序流(progressive
顺序流传输
实时流传输
二、流媒体协议
实时传输协议(Real-time
2.1
RTP数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP数据报的头部格式如图1所示:
图1
其中比较重要的几个域及其意义如下:
- CSRC记数(CC) 表示CSRC标识的数目。CSRC标识紧跟在RTP固定头部之后,用来表示RTP数据报的来源,RTP协议允许在同一个会话中存在多个数据源,它们可以通过RTP混合器合并为一个数据源。例如,可以产生一个CSRC列表来表示一个电话会议,该会议通过一个
RTP 混合器将所有讲话者的语音数据组合为一个RTP数据源。 - 负载类型(PT) 标明RTP负载的格式,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该RTP数据包中承载的是用ITU
G.721 算法编码的语音数据,采样频率为8000Hz,并且采用单声道。 - 序列号 用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,RTP协议本身并不负责数据的重传。
- 时间戳 记录了负载中第一个字节的采样时间,接收方能够时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。
从RTP
图2
2.2
RTCP
RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型:
- SR 发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。
- RR 接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。
- SDES 源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
- BYE 通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。
- APP 由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。
RTCP数据报携带有服务质量监控的必要信息,能够对服务质量进行动态的调整,并能够对网络拥塞进行有效的控制。由于RTCP数据报采用的是多播方式,因此会话中的所有成员都可以通过RTCP数据报返回的控制信息,来了解其他参与者的当前情况。
在一个典型的应用场合下,发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。另一方面,接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。
2.3
作为一个应用层协议,RTSP提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP是一个流媒体表示协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP
RTSP
由RTSP
虽然RTSP服务器同样也使用标识符来区别每一流连接会话(Session),但RTSP连接并没有被绑定到传输层连接(如TCP等),也就是说在整个
RTSP协议目前支持以下操作:
- 检索媒体 允许用户通过HTTP或者其它方法向媒体服务器提交一个表示描述。如表示是组播的,则表示描述就包含用于该媒体流的组播地址和端口号;如果表示是单播的,为了安全在表示描述中应该只提供目的地址。
- 邀请加入 媒体服务器可以被邀请参加正在进行的会议,或者在表示中回放媒体,或者在表示中录制全部媒体或其子集,非常适合于分布式教学。
- 添加媒体 通知用户新加入的可利用媒体流,这对现场讲座来讲显得尤其有用。与HTTP/1.1类似,RTSP请求也可以交由代理、通道或者缓存来进行处理。
三、流媒体编程
RTP
3.1
JRTPLIB
- RTP协议栈简介
- RTP/RTCP协议简介
- RTP/RTCP协议简介
- RTP/RTCP协议简介
- RTP/RTCP协议简介
- RTP协议简介
- RTP协议简介 & RTP报文格式
- RTP协议
- RTP协议
- RTP协议
- RTP协议
- RTP协议
- RTP 协议
- RTP 协议
- RTP协议
- RTP 协议
- RTP协议
- RTP协议
- live555 接收rtsp视频流流程分析
- pandas读取完的csv数据格式
- mysql最近生日问题SQL
- 3.2 类
- uoj#9【UTR #1】vfk的数据
- RTP协议栈简介
- intelij idea java.lang.ClassNotFoundException
- MySql dos下基本操作
- Android开发之初始
- 使用py脚本登录东北大学IP控制网关
- {AT-A-1075. PAT Judge (25)
- 分布式系统常见的事务处理机制
- final 修饰符
- 用Enterprise Architect从源码自动生成类图(附图+工具)