zoukankan      html  css  js  c++  java
  • webrtc RTP协议

    1、RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。

    2、RTP层级

    rtp可以看成是传输层的一部分,同时可以归为 应用层,开发者发送rtp数据需要自己组包和解包,webrtc就是如此。 

    3、RTP协议头

         版本号(V):2比特,用来标志使用的RTP版本。

      填充位(P):1比特,如果该位置位,则该RTP包的尾部就包含附加的填充字节。

         扩展位(X):1比特,如果该位置位的话,RTP固定头部后面就跟有一个扩展头部。

         CSRC计数器(CC):4比特,含有固定头部后面跟着的CSRC的数目。

         M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

         PT: 有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。

        序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,序      列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。

        时戳(Timestamp):占32位,必须使用90 kHz 时钟频率。时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。

        同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。

        特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。

        举例:

        码流如下:

        80 e0 00 1e 00 00 d2 f0 00 00 00 00 41 9b 6b 49 €?....??....A?kI

        80               是V_P_X_CC

        换成二进制 1000 0000 

      10               是V;
      0                 是P;
      0                 是X;
      0000           是CC;

        

  • 相关阅读:
    计算机开机启动原理
    行业术语缩写参照表
    Ghost 克隆工具使用教程
    Windows 系统常用快捷键
    MindMaster使用技巧
    工作打印机型号驱动汇总
    Android手机免ROOT卸载系统内置应用
    RTX腾讯通聊天消息备份
    Work TEL
    成功实施ITSM SLA的5个步骤
  • 原文地址:https://www.cnblogs.com/132818Creator/p/14844458.html
Copyright © 2011-2022 走看看