RTP传输视频数据的两个细节

本文探讨了在RTP协议传输视频数据时,为何需要对大帧进行拆包以及实施发送等待策略。视频数据量远大于音频,若直接发送大帧可能导致丢包,因此在应用层拆包能降低丢包风险。同时,为了避免接收端缓存溢出造成丢包,发送端需要适当等待,确保网络稳定传输。
摘要由CSDN通过智能技术生成

最近接到一个工作,为视频会议的视频编码增加一种VP8格式。整个流程包括VP8的编码,封包,发送,接收,解包,解码。在学习这一部分的代码时,注意到两个细节:一,对于压缩后大于1000字节的视频数据进行了拆包,既把较大的视频数据封装成多个RTP包进行发送。二,视频数据并不是拆包后立即发出,而是进入一个队列,根据一定条件进行等待后再发出。
那么,为什么要进行这两个处理呢?

背景

视频数据的特征

观察项目中的音频数据,是并没有这两个处理的。那么音频和视频有什么不同呢?
音频数据是每20ms得到一帧数据,每一帧比较小。以48000K,单声道为例,48000 * 20 / 1000,也就960个采样,每个采样16位,也就1920字节,经过压缩,肯定是小于1000字节的。
而视频数据不同,视频的数据量远远大于音频(几十甚至上百倍),特别是关键帧,一帧数据压缩后依然非常大。也就是一瞬间,会产生大量的数据待发。

RTP通常是基于UDP的

另一方面,RTP(实时传输协议)虽然可以基于不同的网络,但为了提高实时性,还是基于UDP为多。我们项目中,就是基于UDP发送的。UDP是一个无连接,不保障的网络协议。

原因解析

为什么需要拆包

UDP能接受的最大包,大约是64K左右。如果向UDP发送一个大包,会在下层自动拆分成多个包ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值