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

    概述

    • 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 控制协议(RTP Control Protocol)

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

    RTP

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |V=2|P|X| CC   |M| PT         | sequence number                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    timestamp                                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      synchronization source (SSRC) identifier                 |

     +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
     |      contributing source (CSRC) identifiers                   |
     |                      ....                                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     从 RTP 数据报的格式不难看出,它包含了传输媒体的类型格式序列号时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。

    字段解析

    字段 位宽 含义
    V 2 此域定义了RTP的版本。此协议定义的版本是2。
    P 1 填充标志,如果 P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
    X 1 扩展标志,如果 X=1,则在 RTP 报头后跟有一个扩展报头。
    CC 4 CSRC计数包含了跟在固定头后面CSRC识别符的数目。
    M 1 标记,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
    PT 7 有效载荷类型,用于说明 RTP 报文中有效载荷的类型,如 GSM 音频、JPEM 图像等。
    sequence number 16 每发送一个RTP数据包,序列号加1,接收端可以据此检测丢包和重建包序列。序列号的初始值是随机的(不可预测),以使即便在源本身不加密时(有时包要通过翻译器,它会这样做),对加密算法泛知的普通文本攻击也会更加困难。
    timestamp 32

    时戳反映了该 RTP 报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。

    视频:sps pps和后面的I帧的时间戳是相同的,一个NALU分包发送的时间戳也是一样的。

    SSRC 32 用以识别同步源。标识符被随机生成,以使在同一个RTP会话期中没有任何两个同步源有相同的SSRC识别符。尽管多个源选择同一个SSRC识别符的概率很低,所有RTP实现工具都必须准备检测和解决冲突。若一个源改变本身的源传输地址,必须选择新的SSRC识别符,以避免被当作一个环路源。
    CSRC 32 每个 CSRC 标识符占 32 位,可以有 0~15 个。每个 CSRC 标识了包含在该 RTP 报文有效载荷中的所有特约信源。
  • 相关阅读:
    Linux系统排查1——内存篇
    (原创)Python字符串系列(1)——str对象
    (原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持
    (原创)Python文件与文件系统系列(5)——stat模块
    (原创)Python文件与文件系统系列(4)——文件描述字操作
    CenterOS7——使用yum命令报错Could not retrieve mirrorlist
    awk 查询某一列大于1900的值
    /bin/bash^M: bad interpreter: No such file or directory
    linux 设置时间同步
    CentOS7 服务器分析挖矿病毒,清理挖矿病毒 tor2web
  • 原文地址:https://www.cnblogs.com/vczf/p/13929882.html
Copyright © 2011-2022 走看看