自适应编码实现

本文介绍了自适应编码的实现原理和策略,通过RTCP的RR包获取丢包信息,利用丢包率计算和AIMD算法动态调整编码速率。在遇到网络拥塞时,减少码率,网络空闲时线性增加码率,确保带宽合理利用。同时,文中提及了在实际测试中遇到的问题,如iperf发送速率不固定、编码输出速率与设置不符以及初始化编码器导致的画面停顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过一段时间实验,关于自适应编码得到些成果,但还有很多问题,现把我的做法贴出来,欢迎高手指教!

原理:
网络传输的反馈信息是通过RTCP包中的RR(接受者报告)包得到。通过RR包中的累积丢包数等反馈信息可以计算出当前的传输丢包率。当丢包率低于预先设定的最小值时,增加编码输出速率。当丢包率大于设定的最大值时,降低编码输出速率。当网络拥塞时,发送速率乘性减小,降低对所需带宽的要求。同时设置最小发送码率,保证发送端所需的最小带宽。当网络空闲时,线性增加发送码率。同时设置最大发送码率,保证发送端不会过度占用资源。当网络负载正常时不作任何调整。
丢包率计算:
(1) 计算该发送时隙丢失的数据包数L(n):前端一个发送时隙前后接收的两个RR包中包丢失的累计数之差就是该发送时隙丢失的数据包数,即
L(n)=C(n) - C(n-I)
其中C(n)是第n个发送时隙后共丢失的数据包数。
(2) 计算该时隙中应收到的数据包的数R(n):两个接收数据包中的最高序列号扩展的差就是接收者在该时隙中应收到的数据包数,即
R(n)=H(n) - H(n-1),
其中H(n)是第n个发送时隙后收到的数据包的最高序列号。
(3) 计算该时隙中数据包丢失比例F(n):L(n)与R(n)之比即在该时隙中数据包丢失比例,即
F(n)=L(n)/R(n);
(4) 计算该时隙中数据包的丢失比率,就是每秒钟的丢包数f(n):数据包的丢失比率等于丢失比例除以两个RR中NTP时间戳的差,即
f(n) = F(n) / ( NTP(n) - NTP(n-1) )

关于时间戳如何取得&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值