关于音视频流传输的一些想法

一、发送频率:核心思想是根据音视频的时间戳进行发送频率控制。
    1、在发送线程中,用最新获取到的帧时间戳 减去 上次发送帧的时间戳,得到音视频发送间隔,
    2、计算当前系统时间跟上次发送系统时间 间隔是否已经大于等于 音视频发送间隔,
    3、如果大于等于,直接发送,如果还没有达到音视频发送间隔,线程做相应时间的休眠后再发送,
    4、如果音视频发送时间间隔大于视频帧间间隔(可以根据视频帧率计算),应该认为前端是有丢帧,跳帧,应该直接发送。
    5、如果得到的音视频发送间隔是负数,应该认为前端送帧发生了帧乱序,此时不应该按照该帧的时间戳进行发送。

二、帧乱序处理:小范围排序,缓冲调整,丢弃,恢复,重传
    1 直接丢弃该帧!这会产生一个严重后果就是接收端会发生花屏,卡顿的现象。
    1 修复该帧时间戳!根据音视频帧率,和上次帧的时间戳进行修复,也就是重新给该帧填充时间戳。
        此时如果该帧不是上一帧的连续帧,接收端会出现跳帧现象,甚至花屏,卡顿。
    3 在前端做少量帧排序,尽量保证前端送帧有序。这种音视频帧乱序,如果音频和视频编码器是两个线程,
        考虑到不同线程出帧速度的快慢,有可能会影响编码后的帧到达先后顺序。
    4 如果是网络传输到达的帧乱序,处理比较麻烦。
        4.1 需要做一定的缓冲,在缓冲中调整帧顺序,再出帧。
        4.2 在网络情况不是特别差的情况下,发送非连续丢帧,可以增加FEC的机制,进行丢包恢复。
            (FEC需要增加冗余包发送,在发送和接收端都需要复杂的计算,比较消耗CPU等计算资源)
        4.3 增加确认和重传机制,确认机制在流程上变得复杂,重传会进一步消耗带宽,如果在网络带宽不好的情况下,需要做好平衡。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值