直播延迟
2016-03-18 15:50:25 0 举报
AI智能生成
RTMP直播延迟分析
作者其他创作
大纲/内容
启动延迟
定义:视频播放要等到IDR才能开始播放,假设rtmp没有缓冲Gop Cache off,是有一帧数据就发一帧。
如果用户开启播放的时刻正是在GOP组的中间1/3,用户要等到下一个IDR到来时才能播放,则等待画面出现时间为2/3Gop。平均时间为1/2 (Gop time)
解决办法:开启Gop Cache。
引入问题:播放延迟增大。
原因:由于开启Gop Cache,服务器在用户连接时,会从上一个IDR位置发包,则引入了播放延迟,同样这个播放延迟的均值为1/2 (Gop Time)
解决办法:快速播放。比如说 cache 可能缓存了 5 秒的数据,为了控制延迟在 2 秒,就会把前 3 秒的都统一成一个时间戳,缓冲的视频帧下发给播放端,会有快速播放的效果,这样会减少延时
播放延迟
定义:用户播放画面的时间,与推流端画面的时间差。
解析:
如果客户端(缓存关闭),服务器(缓存关闭),编码器(B帧无),那么延迟可以做到与最低:编码时间+网络延迟(包含路由器缓存的网络往返时间)
如果客户端(缓存关闭),服务器(缓存关闭),编码器(B帧无),那么延迟可以做到与最低:编码时间+网络延迟(包含路由器缓存的网络往返时间)
Gop Cache on,将极大影响播放延迟均值为1/2(Gop time),但关闭会引发启动延迟均值为1/2(Gop time)
解决方案: Gop Time 在推流端设为小,这样可以兼顾启动延迟和播放延迟。
引入问题:视频编码效率变低,带宽消耗变大
解决方法:扩大带宽,但成本上升
累计延迟
定义:由于推流端与播放端的带宽速度不对称,而rtmp是tcp不丢包连接,
所以当播放端卡顿时,推流速度大于播放速度,而在卡顿后播放器并不加速播放,将使服务器的缓存空间变大,客户端缓存变大,使得播放延迟变大。
所以当播放端卡顿时,推流速度大于播放速度,而在卡顿后播放器并不加速播放,将使服务器的缓存空间变大,客户端缓存变大,使得播放延迟变大。
服务端解决办法:删除缓存数据至上一个GOP的IDR位置。
客户端解决办法: 当客户端缓存太大,客户端自动断开连接重连
总结
Gop cache 开启,可解决启动延迟问题,但加大播放延迟
延迟要可控的话,与Gop Time 有重大关系,推流端要求可控。
实际某次测试的延迟与开启播放的时间点有关,当播放端开启播放的时刻恰好在IDR位置,则直播延迟为(0+网络延迟),
所以延迟应用均值表示较为妥当,同时测试时,也应在多个时间点采样。
所以延迟应用均值表示较为妥当,同时测试时,也应在多个时间点采样。
累计延迟要用以上办法规避。
0 条评论
下一页