一般来说,视频直播中的延迟一般分为启动延迟、播放延迟和累计延迟。
1.启动延迟
定义:视频播放要等到IDR才能开始播放,假设rtmp没有缓冲Gop Cache off,是有⼀帧数据就发⼀帧。 如果⽤户开启播放的时刻正是在GOP组的中间1/3,⽤户要等到下⼀个IDR到来时才能播放,则等待画⾯出现时间为2/3Gop。平均时间为1/2 (Gop time),如果没有开启Gop Cache off,是没有办法实现首帧秒开。
上面问题的解决办法:开启Gop Cache。
开启Gop Cache又会引入新的问题。就是播放延迟增大,所以首帧秒开,并不能解决延迟的问题。为什么呢?
原因:由于开启Gop Cache,服务器在⽤户连接时,会从上⼀个IDR位置发包,则引⼊了播放延迟,同样这个播放延迟的均值为1/2 (Gop Time),这个延迟时间就是由缓冲导致的。
针对这个因为服务器缓存cache带来的播放延迟,有什么解决办法呢?
解决办法:
快速播放。⽐如说 cache 可能缓存了 5 秒(cache不适合缓存太长)的数据,为了控制延迟在 2 秒,就会把前 3秒的都统⼀成⼀个时间戳,缓冲的视频帧下发给播放端,会有快速播放的效果,这样会减少延时。
2.播放延迟
播放延迟定义:⽤户播放画⾯的时间,与推流端画⾯的时间差。
解决办法: 如果客户端(缓存关闭),服务器(缓存关闭),编码器(B帧⽆),那么延迟可以做到最低延迟时间:编码时间+⽹络延迟(包含路由器缓存的⽹络往返时间)
Gop Cache on,将极⼤影响播放延迟均值为1/2(Gop time),但关闭会引发启动延迟均值为1/2(Gop
time),所以这个缓冲是否开启,根据自己的需求来设计。
播放延迟与启动延迟折中的办法?
解决⽅案:Gop Time 在推流端设为⼩,这样可以兼顾启动延迟和播放延迟。
引入问题:同样码率情况,视频编码效率变低,带宽消耗大。
解决办法:扩大带宽,但是成本上升。
所以上面每一个解决办法,都有可能带来新的问题,一定要根据自己的需求来设计参数。
3.累计延迟
累计延迟定义:由于推流端与播放端的带宽速度不对称,⽽rtmp是tcp不丢包连接, 所以当播放端卡顿时,推流速度⼤于播放速度,⽽在卡顿后播放器并不加速播放,将使服务器的缓存空间变⼤,客户端缓存变⼤,使得播放延迟变⼤。累计延迟需要监控编码码率和发送码率的情况,解决办法如下:
服务端解决办法:删除缓存数据⾄上⼀个GOP的IDR位置。
客户端解决办法: 当客户端缓存太⼤,客户端⾃动断开连接重连。
4.总结
(1)Gop cache 开启,可解决启动延迟问题,但加⼤播放延迟
(2)延迟要可控的话,与Gop Time 有重⼤关系,推流端要求可控。
(3)实际某次测试的延迟与开启播放的时间点有关,当播放端开启播放的时刻恰好在IDR位置,则直播延迟为(0+⽹络延迟), 所以延迟应⽤均值表示较为妥当,同时测试时,也应在多个时间点采样。
(4)累计延迟要⽤以上办法规避。
关于延迟就分享到这里,欢迎关注,点赞,转发,分享。
1.文章《[如何加快视频缓冲]b站视频如何缓冲》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《[如何加快视频缓冲]b站视频如何缓冲》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好