一点直播卡顿的处理思考

13 篇文章 0 订阅

投屏软件有几个指标:

1,首屏过去的时间(T0)要尽可能短。

2,发送端与接收端的时间差(T1)要尽可能短。

3,如果T1值不断变大,要能及时纠正回去。目前的现象是,经常是T1值超过30S的时候才跳回去。


问题1:

通过提前协商好发送端的流信息,来解决。 (不要执行avformat_find_stream_info,这个是造成T0的元凶)

问题2:

通过缩小发送端与接收端的缓冲区大小来解决。这里有个问题,如果接收端的音频缓冲区不能太小了,不然很容易造成声音播放卡顿;如果缓冲区太大,就会造成T1值变大。

问题3:

这个原因有:路由器、发送端cpu,发送端和接收端的网卡,rtmp server端设置不对。

路由器:

关于路由器的问题,当我了解到了之后,就明白了,为什么 vive头盔会拖着一根线了,因为无线真的不靠谱啊(在当前的无线协议下)。

发送端与接收端都是有线的话,是最好的;如果两端其中之一是无线连接的话,就要适当调小视频的码率了。


cpu的问题:

接收端倒还好,就是显示的时候占用的cpu高点。

发送端因为牵扯到截屏和编码,cpu占用一点都不含糊。尽量用DX截,因为cpu占用率低。


无线网卡的问题:

无线就是不那么稳定,你怎么着吧~~,公司有台老的测试thinkpad,局域网 ping值经常到 1000ms以上,在加上tcp协议保证数据正确性的特点,导致了延迟


rtmp server端的问题:

参数值设置缓冲区大小,貌似没用。后来想了一下server端的处理逻辑,想明白了。server端堆积视频帧缓冲区满了的时候,它是直接清空了整个缓冲区。(这就导致了接收端 可能长时间接收不到I帧,导致解析不出图像来),其实最好的做法是把I帧留下,把P帧B帧清除出去。目前我还没能力更改server端的代码(或者说可能要花的时间太多)大哭~~~~~



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值