RTP协议

一、介绍

        RTP协议是一个实时传输流协议,是应用层的一个协议。通常说的RTSP包括以下三种:

1. RTSP协议:负责服务器和客户端之间的请求与响应

2. RTP协议:负责服务器和客户端之间的传输媒体数据

3. RTCP协议:负责提供有关RTP传输质量的反馈,就是确保RTP的传输质量

RTPRTCP并没有规定传输层的类型,可以是TCPUDP,但RTSP传输层必须基于TCP

二、RTP结构

        RTP由 RTP报文头 + 有效荷载 组成。

2.1 RTP头部

        RTP头部结构如下图所示:

//报文头:大端存储
struct RTPHeader{
    /* byte 0 */
    uint8_t csrclen : 4;    //CSRC计数器,占4位,表示CSRC的个数
    uint8_t extension : 1;  //扩展位,占1位,如果X=1,在RTP报文头后会跟一个扩展报文头
    uint8_t padding : 1;    //填充标志,占1位,如果P=1,在RTP报文后会填充一个或者多个八位组,它们不是有效荷载的一部分
    uint8_t version : 2;//RTP协议版本号,占2位
    
    /* byte 1 */
    uint8_t payloadType : 7; //有效荷载类型,占7位,用于说明RTP有效荷载的类型,比如GSM音频、JPEM图像等
    uint8_t marker : 1;      //标记,占1位,对于不同有效荷载类型的意义不同:1.对于视频来说,标记着一帧的结束。2.对于图像来说,标记会话的开始  

    /* byte 2-3 */
    uint16_t seq;            //序列号,占16位,每发送一个报文,序列号递增1
                             //接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据
    /* byte 4-7 */
    uint32_t timetamp;       //时间戳,占32位,记录了此RTP报文的第一个八位组的采样时刻
                             //接受者可以用时间戳计算延迟
    /* byte 8-11 */
    uint32_t ssrc;           //同步信源的唯一标识,占32位,同一RTP会话中没有相同的SSRC

    /*
        标准的RTPHeader还可能存在0-15个CSRC
        uint32_t csrc;//特约信源,每个占32位,表示对RTP数据包做出过贡献的源,
                      //它用于标识在混合音频时,实际参与的数据源
    */
};

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值