编码器用FMLE,用手机秒表作为延迟计算。
结论:
1. 影响延迟的三个重要因素:网络带宽不足延迟越大,服务器算法缓存越多延迟越大,编码gop越大延迟越大
2. 若只考虑服务器,NGINX-RTMP做源站时延迟在2-3秒以上。
3. 若只考虑服务器,SmartServer做边缘延迟最小在0.3秒,多级边缘服务器没有影响。
服务器结构如下:
源站:NGINX-RTMP
一级边缘:SmartServer
二级边缘:SmartServer
图片从左到右为:手机秒表,源站,一级边缘,二级边缘;
H264,baseline,gop=1秒,fps=20,bitrate=500kbps
可见,延迟主要是在NGINX-RTMP,边缘服务器的延迟算法让延迟最低。
改变编码参数:
H264,baseline,gop=5秒,fps=20,bitrate=500kbps
可见,gop变大后,每层都会有随机的延迟,原因是缓存了一些数据。
基本上5秒gop,就会有5/2秒延迟,即2.5秒左右延迟。
改变编码参数gop为10秒:
H264,baseline,gop=10秒,fps=20,bitrate=500kbps
gop大了之后,延迟就要拼人品了。
改变编码参数为main:
H264,main,gop=1秒,fps=20,bitrate=500kbps
基本上和baseline差不多。
没有什么影响,除了我的CPU上去了。
编码参数改为VP6:
VP6 Quality=GoodQuality-GoodFramerate NoiseReduction=None DatarateWindow=Medium CPUUsage=Dedicated gop=1秒 fps=20
可见VP6也是一样,延迟在NGINX-RTMP源站,边缘没有延迟。
编码参数改为VP6,gop为10秒:
VP6 Quality=GoodQuality-GoodFramerate NoiseReduction=None DatarateWindow=Medium CPUUsage=Dedicated gop=10秒 fps=20
可见VP6时也一样受gop影响。