`
zpball
  • 浏览: 919305 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

视频流传输协议RTP/RTCP/RTSP/HTTP的区别

 
阅读更多
用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。
之所以以前对这几个有点分不清,是因为CTC标准里没有对RTCP进行要求,因此在标准RTSP的代码中没有看到相关的部分。而在私有RTSP的代码中,有关控制、同步等,是在RTP Header中做扩展定义实现的。
另外,RFC3550可以看作是RFC1889的升级文档,只看RFC3550即可。
RTP:实时传输协议(Real-time Transport Protocol)

  • RTP/RTCP是实际传输数据的协议
  • RTP传输音频/视频数据,如果是PLAY,Server发送到Client端,如果是RECORD,可以由Client发送到Server
  • 整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议(即RTCP)


RTSP:实时流协议(Real Time Streaming Protocol,RTSP)

  • RTSP的请求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顾名思义可以知道起对话和控制作用
  • RTSP的对话过程中SETUP可以确定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以开始或者停止RTP的发送,等等


RTCP:

  • RTP/RTCP是实际传输数据的协议
  • RTCP包括Sender Report和Receiver Report,用来进行音频/视频的同步以及其他用途,是一种控制协议


以下是每个协议的概要介绍:
一、RTP数据协议
    RTP数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP数据报的头部格式如图1所示:



其中比较重要的几个域及其意义如下:

  • CSRC记数(CC):表示CSRC标识的数目。CSRC标识紧跟在RTP固定头部之后,用来表示RTP数据报的来源,RTP协议允许在同一个会话中存在多个数据源,它们可以通过RTP混合器合并为一个数据源。例如,可以产生一个CSRC列表来表示一个电话会议,该会议通过一个RTP混合器将所有讲话者的语音数据组合为一个RTP数据源。
  • 负载类型(PT):标明RTP负载的格式,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该RTP数据包中承载的是用ITU G.721算法编码的语音数据,采样频率为8000Hz,并且采用单声道。
  • 序列号:用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,RTP协议本身并不负责数据的重传。
  • 时间戳:记录了负载中第一个字节的采样时间,接收方能够时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。


    从RTP数据报的格式不难看出,它包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。RTP协议的目的是提供实时数据(如交互式的音频和视频)的端到端传输服务,因此在RTP中没有连接的概念,它可以建立在底层的面向连接或面向非连接的传输协议之上;RTP也不依赖于特别的网络地址格式,而仅仅只需要底层传输协议支持组帧(Framing)和分段(Segmentation)就足够了;另外RTP本身还不提供任何可靠性机制,这些都要由传输协议或者应用程序自己来保证。在典型的应用场合下,RTP一般是在传输协议之上作为应用程序的一部分加以实现的,如图2所示:


二、RTCP控制协议
    RTCP控制协议需要与RTP数据协议一起配合使用,当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用。RTP本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完成。通常RTCP会采用与RTP相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断。
    RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型:

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


    RTCP数据报携带有服务质量监控的必要信息,能够对服务质量进行动态的调整,并能够对网络拥塞进行有效的控制。由于RTCP数据报采用的是多播方式,因此会话中的所有成员都可以通过RTCP数据报返回的控制信息,来了解其他参与者的当前情况。
    在一个典型的应用场合下,发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。另一方面,接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。


三、RTSP实时流协议
    作为一个应用层协议,RTSP提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP是一个流媒体表示协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与RTP间的交互操作(RFC2326)。

    RTSP在制定时较多地参考了HTTP/1.1协议,甚至许多描述与HTTP/1.1完全相同。
RTSP之所以特意使用与HTTP/1.1类似的语法和操作,在很大程度上是为了兼容现有的Web基础结构,正因如此,HTTP/1.1的扩展机制大都可以直接引入到RTSP中。
    由RTSP控制的媒体流集合可以用表示描述(Presentation Description)来定义,所谓表示是指流媒体服务器提供给客户机的一个或者多个媒体流的集合,而表示描述则包含了一个表示中各个媒体流的相关信息,如数据编码/解码算法、网络地址、媒体流的内容等。
    虽然RTSP服务器同样也使用标识符来区别每一流连接会话(Session),但RTSP连接并没有被绑定到传输层连接(如TCP等),也就是说在整个RTSP连接期间,RTSP用户可打开或者关闭多个对RTSP服务器的可靠传输连接以发出RTSP 请求。此外,RTSP连接也可以基于面向无连接的传输协议(如UDP等)。

    RTSP协议目前支持以下操作:

  • 检索媒体:允许用户通过HTTP或者其它方法向媒体服务器提交一个表示描述。如表示是组播的,则表示描述就包含用于该媒体流的组播地址和端口号;如果表示是单播的,为了安全在表示描述中应该只提供目的地址。
  • 邀请加入:媒体服务器可以被邀请参加正在进行的会议,或者在表示中回放媒体,或者在表示中录制全部媒体或其子集,非常适合于分布式教学。
  • 添加媒体:通知用户新加入的可利用媒体流,这对现场讲座来讲显得尤其有用。与HTTP/1.1类似,RTSP请求也可以交由代理、通道或者缓存来进行处理。




      HTTP与RTSP传输的差别。概括的讲,RTSP被许多公司防火墙拒绝,而HTTP可以作为一个普通的文件通过;RTSP适合于大数据量、高可用性的流,如直播事件、长事件或大型文件;HTTP更适合于较小的数据传输和交互;当终端用户正在观看时,RTSP允许用户在服务器有效的回放媒体,HTTP更象下载一段媒体并在客户机上播放。从终端用户观点来看,RTSP看起来像是文件从中心位置播放,有点象广播,而HTTP感觉更象时从视频库中取视频,并在家里的机器上播放。从服务质量的观点上看,对于流,RTSP有更好的体验,RTSP提供类似于VCR的媒体控制,如暂停、快进、倒退和绝对定位。使用HTTP传输,只能在整个流下载完成后,播放器软件再模拟该过程。虽然,RTSP能够使用TCP或UDP,但是RTSP控制经常与RTP联合使用,以最好的服务质量传送实际的媒体数据。
  • 大小: 7.8 KB
  • 大小: 7.3 KB
分享到:
评论

相关推荐

    RTSP/RTP/RTCP之间的区别

    RTSP/RTP/RTCP的概念以及区别。摘抄别人的,自我感觉该资料讲的比较通俗易懂

    RTSP&RTP&RTCP&RTMP_RTSP-RTP-RTCP-RTMP_

    RTSP(Real Time Streaming Protocol,实时流传输协议)、RTP(Real-time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)以及RTMP(Real-Time Messaging ...

    基于linux系统的RTP/RTCP/RTSP源代码

    The standards for RTP and the RTP Control Protocol (RTCP)are RFCs 1889 and 1890. Also contained in the directory ``main'' is an application that uses the library to play real-time audio streams in ...

    live.2006.12.08.tar.gz_RTCP_RTP/RTCP_open_sip_sip rtp

    This code forms a set of C++ libraries for multimedia streaming, using open standard protocols (RTP/RTCP, RTSP, SIP).

    使用wireshark抓RTSP, RTP, RTCP网络包

    Wireshark 的协议分析功能可以对 RTSP、RTP、RTCP 等协议进行详细的分析和解析,帮助开发者和维护者对网络协议进行调试和优化。同时,Wireshark 的灵活性和可扩展性也使其可以应用于各种网络协议的分析和调试。 ...

    Android之基于RTP/RTSP即时通讯-Android源码

    本项目“Android之基于RTP/RTSP即时通讯-Android源码”正是这样的一个解决方案,它利用了AnyChat的核心技术,实现了包括视频聊天、可视通话、电视直播和即拍即传等多种实时通讯功能。以下是关于这些知识点的详细解释...

    rtsp.rar_rt_rtp rtcp rtsp_rtsp_rtsp rtcp_rtsp rtp

    RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol)是与RTSP紧密配合的两个底层传输协议,它们共同构成了多媒体数据在互联网上实时传输的基础框架。 RTSP提供了一种机制,允许...

    rtp+rtcp+rtsp live555源代码

    在IT行业中,流媒体技术是不可或缺的一部分,尤其在实时音视频传输领域,RTP(Real-time Transport Protocol)、RTCP(Real-time Transport Control Protocol)和RTSP(Real-Time Streaming Protocol)扮演着关键...

    RTP_RTCP,RTSP+在无线视频监控系统的设计与实现

    ### RTP/RTCP与RTSP在无线视频监控系统中的应用 #### 引言 无线视频监控系统的兴起得益于流媒体技术的成熟与3G网络的普及。流媒体技术,特别是RTP(Real-Time Transport Protocol)、RTCP(Real-Time Transport ...

    基于RTPRTCP和RTSP协议的流媒体快速流间同步机制

    ### 基于RTP/RTCP和RTSP协议的流媒体快速流间同步机制 #### 一、引言 随着互联网技术的迅速发展,流媒体技术已成为远程教育、视频点播、视频会议、IPTV等众多业务的重要支撑。其中,**多媒体同步技术**作为流媒体...

    RTSP/RTCP 协议介绍及示例

    RTSP(Real Time Streaming Protocol)是一种应用层协议,主要用于在IP网络上控制实时流媒体的传输。RTSP由Real Network和Netscape共同提出,它提供了对流媒体数据的播放、暂停、快进等控制功能,但并不实际传输数据...

    rtsp_server.rar_c RTSP_c rtsp server_rtp协议_rtsp C源码_rtsp rtp

    RTP协议则专注于数据传输,通常与RTSP一起使用,负责承载音频、视频等实时数据。RTP使用UDP作为基础传输协议,因为它提供了较低的延迟,适合实时数据的传输。每个RTP数据包都包含一个时间戳,用于同步接收端的数据...

    简单的RTSP, RTP, RTCP推送H264码流服务器实现

    RTSP (Real-Time Streaming Protocol)、RTP (Real-time Transport Protocol) 和 RTCP (Real-time Transport Control Protocol) 是网络音视频传输中的三个重要协议,它们共同构成了实时流媒体的基础架构。下面将详细...

    live.tar.gz_RTP rtcp_RTSP H.264_rtp_rtsp rtcp client_sip server

    包含RTP/RTCP/RTSP以及SIP的协议栈源码, 内含Mpeg1/2/4以及H.263/H.264的Streaming RTP代码,适用于流媒体相关开发的Client和Server

    rtp_rtcp的传输流媒体

    在IT行业中,实时传输协议(RTP)和实时控制协议(RTCP)是网络流媒体传输中的关键组件,尤其在音频、视频等实时数据的传输中扮演着重要角色。RTP和RTCP一起工作,为互联网上的多媒体通信提供了一种高效、可靠的方式...

    基于RTP_RTCP的分层多播拥塞控制算法的研究

    RTP/RTCP协议是专为实时应用设计的,主要用于传输音频、视频等多媒体数据。RTP负责实际的多媒体数据传输,而RTCP则提供服务质量监测功能,通过定期发送控制包来报告传输质量和会话参与者的相关信息。这种设计使得RTP...

    RTSP、RTP、RTCP

    RTSP(Real Time Streaming Protocol,实时流传输协议)、RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-time Transport Control Protocol,实时传输控制协议)是网络音视频通信领域中的三个关键...

    RTP.rar_RTCP_rtsp

    RTP(Real-time Transport Protocol)、RTCP(Real-time Transport Control Protocol)和RTSP(Real-Time Streaming Protocol)是网络音视频传输中的三个核心协议,广泛应用于流媒体服务、在线会议、远程教育等领域...

    采用jrtplib的RTP视频传输程序

    它展示了如何在实际应用中实现高效的视频流传输,对于理解实时多媒体通信和网络编程具有很高的学习价值。开发者需要熟悉RTP协议、多媒体处理以及网络编程,才能有效地利用这些工具和技术构建出稳定可靠的视频传输...

Global site tag (gtag.js) - Google Analytics