1.编码延时优化
(1).把B帧丢掉(视频帧有I、P、B帧),可以减少编码耗时。因为B帧在解码时需要依赖前后视频帧,编解码时会增加时延。把它丢掉,不仅可以减少编码的耗时,还减少带宽的开销和拉流端在解码时的时延。
(2).如果使用了ffmpeg库,要降低probesize(监控帧信息的监测大小)和analyze duration(监测时长)这两个参数的值,它们对编码时延很有影响。
(3).尽量采用VBR可变码率编码,减少不必要的网络带宽开销。固定码率编码CBR虽可以消除网络拉动的影响,但还是建议使用VBR。
2、推流端和拉流端的优化
拉流端使用动态Buffer策略,即在播放器内设置一定的缓存空间,以便能在播放过程中缓冲一定的数据。它的大小可以通过在播放器下载首个视频片段(如m3u8文件中的第一个TS分片)的耗时来决定下一个时间片的缓存大小,同时在播放过程中实时监测当前网络,实时调整播放过程中缓存的大小,这样既可以做到极短的首开时间,还可以尽量消除网络抖动造成的影响。
3、传输方式优化
选择更好更快的传输协议,选择HTTP-FLV或RTMP传输数据,增加丢包补偿容错机制。
4、传输网络优化
(1).在CDN结点中缓存当前推流的GOP,配合播放端优化视频首次打开视频的时间。备注:GOP ,group of pictures 指的就是两个I帧之间的间隔,如果GOP为120,那么720 p60的话,那就是2s一次I帧。
(2).后台实时检测每个视频流流向各个环节的秒级帧率和码率,实时监控码率和帧率的波动。
(3).通过直连IP方式访问直播地址,减少使用域名带来的DNS解析时延。
5、网络传输策略优化
自适应选择最优的网络链路和CDN结点。