zoukankan      html  css  js  c++  java
  • RTP/RTCP协议

    Warning: 本文原网页 http://www.cnblogs.com/moonvan/archive/2011/09/11/2173448.html

                  在此基础上略作修改,如有侵权,请告知删除,谢谢!

    流媒体协议

    当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输。

    下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。

    流式传输是指传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输可以边下载边观看流媒体节目,可以实现网上直播、视频会议等。

    目前,支持流媒体传输的协议主要有:实时传输协议RTP(Real-time Transport Protocol)、实时传输控制协议RTCP(Real-time

    Transport Control Protocol)实时流协议RTSP(Real-time Streaming Protocol) 等,此类协议在IP/TCP协议中的位置如图所

    示。

    0_1312533661cwxI

    图 1 流媒体协议在IP/TCP协议中的位置

    0_1328873949qWNw

    图 2 TCP/IP模型及各层对应协议

    RTP/RTCP协议

        RTP协议

    RTP 为实时应用提供端到端的数据运输,但不提供任何服务质量的保证,服务质量由RTCP来提供

    从应用开发者的角度看,RTP 应当是应用层的一部分。在应用的发送端,开发者必须编写用 RTP 封装分组的程序代码,然后把

    RTP分组交给 UDP 插口接口。在接收端,RTP 分组通过 UDP 插口接口进入应用层后,还要利用开发者编写的程序代码从 RTP 分组

    中把应用数据块提取出来。

     

    RTP工作机制:当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组

    成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。

     RTP数据发向偶数的UDP端口而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个

    UDP端口对。 RTP的发送过程如下,接收过程则相反。

           1) RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。

           2) RTP将RTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的奇数端口。

     

    RTP分组只包含RTP数据,而控制是由RTCP协议提供。RTP在1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会

    话中的RTCP则使用下一个奇数UDP端口号。端口号5004和5005分别用作RTP和RTCP的默认端口号。RTP分组的首部格式如图3所

    示,其中前12个字节是必须的。

    0_1312533725GJd8

    图 3 RTP分组的首部格式

         RTCP协议

         RTCP 协议的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识

         RTCP 分组也使用 UDP 传送,但RTCP 并不对声音或视像分组进行封装。可将多个 RTCP 分组封装在一个 UDP 用户数据报 

         中。RTCP 分组周期性地在网上送,它带有发送端和接收端对服务质量的统计信息报告。

     

         RTCP包含五种分组类型:

            1)结束分组 BYE 表示关闭一个数据流。

            2)特定应用分组 APP 使应用程序能够定义新的分组类型。

            3)接收端报告分组 RR 用来使接收端周期性地向所有的点用多播方式进行报告。

            4)发送端报告分组 SR 用来使发送端周期性地向所有接收端用多播方式进行报告。

            5)源点描述分组 SDES 给出会话中参加者的描述。

  • 相关阅读:
    菜鸟成长记(十二)----- 生活的意义是什么?
    菜鸟成长记(十一)----- 操蛋的2016与未知的2017
    菜鸟成长记(十)----- 好笑的格局
    菜鸟成长记(九)----- 当我作死的时候,我在想些什么。
    菜鸟成长记(八)----- 一个萝卜一个坑
    菜鸟成长记(七)----- 如何叫醒一个装睡的人?
    菜鸟成长记(六)----- 懒惰与惶恐的挣扎
    C++类的数组元素查找最大值问题
    成为IT精英,我奋斗了7年
    DS1337 时钟芯片在 C8051F 上的实现
  • 原文地址:https://www.cnblogs.com/louis-tin/p/4862209.html
Copyright © 2011-2022 走看看