音视频协议解析(RTP/RTCP/RTSP/RTMP)——RTP载荷解析

介绍

我这个系列讲解音视频相关的协议,这部分内容比较多,我打算分成好几篇讲,感兴趣的读者可以关注一下。有了以上的基础,我就打算做一个音视频的网络服务器。如果您觉得读起来有点困难,可以先补一下计算机网络的知识,主要是TCP,UDP,HTTP相关的知识。

讲解

这篇文章讲解 RTP 协议中的载荷(payload),是报头(Header)接下来的数据结构,对 Header 感兴趣的朋友可以看一下音视频协议解析(RTP/RTCP/RTSP/RTMP)——(2)

RTP 的 payload 根据帧数据大小分成:单包,分片包,聚合包这三类。

单包:

一个 RTP 包含有一帧数据,Header 和帧数据不超过网络最大传输单元(MTU)。

分片包:

如果帧数据比较大,传输时超过了网络最大传输单元(MTU),则需要分片传输,就是将帧数据分为多个 RTP 包传输。

我们可以看到在 payload 前还有 FU indicator 和 FU header,我讲解一下。

FU indicator:

sttuct FU_indicator{
    forbidden_zero_bit;   //F 禁止位 占 1 bit
    nal_ref_idc;          //NRI 占 2 bits
    nal_unit_type;        //NALU类型 占 5 bits
};
FU header:

sttuct FU_header{
    Start;       //帧数据的第一个RTP包,该标志置1, 其他RTP包置0,占 1 bit
    End;       //帧数据的最后一个RTP包,该标志置1,其他RTP包置0,占 1 bit
    R;       //设置为0,占 1 bit
    Type;    //H264的NALU的第一个字节的类型,占 5 bits
};

聚合包:

当帧数据比较少是,组合在一个 RTP 包中传输。

好了,做个总结,由于传输帧的数据大小不固定,有的大有的小,于是就分了3种 RTP 包,对于帧数据小的选择聚合包,刚好的选择单包,太大的选择聚合包。

下一篇,我们接着讲与 RTP 配合使用的 RTCP 协议。

欲知后事如何,请听下回分解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值