ffmpeg的转码延时测试与设置优化

来源:互联网 发布:淘宝叫顾客给好评话术 编辑:程序博客网 时间:2024/05/16 14:46
我测试了下ffmpeg直播流的转码延时,这些参数对文件的转码也是通用的;

测试环境:
 . ffmpeg 版本为v3.0.2
 . 从同一台服务器拉流,转码再推送到同一台服务器上,这样减少了服务器与网络影响;
 . 播放器使用实时模式,不缓冲

1. 设置slow参数
$ ./ffmpeg -i rtmp://192.168.1.12/live/src -vcodec libx264 -preset slow -b:v 400k -s 720x576 -r 25 
-acodec libfaac -b:a 64k -f flv rtmp://192.168.1.12/live/dst

设置了这个参数(-preset slow)后,延时大概在10.6 -- 12.1 秒,
但它的图像质量会好

Fig-1 slow-3

2. 不设置优化参数
ffmpeg命令行:
$ ./ffmpeg -i rtmp://192.168.1.12/live/src -vcodec libx264 -b:v 400k -s 720x576 -r 25 
-acodec libfaac -b:a 64k -f flv rtmp://192.168.1.12/live/dst
延时大概在1.6 -- 2.6秒

Fig-2 no-setting-3

3.设置fast参数
ffmpeg命令行:
$ ./ffmpeg -i rtmp://192.168.1.12/live/src -vcodec libx264 -preset fast -b:v 400k -s 720x576 -r 25 
-acodec libfaac -b:a 64k -f flv rtmp://192.168.1.12/live/dst
延时大概在2.1 -- 2.2秒

Fig-3 fast-2

4. 设置ultrafast参数
ffmpeg命令行:
$ ./ffmpeg -i rtmp://192.168.1.12/live/src -vcodec libx264 -preset ultrafast -b:v 400k -s 720x576 -r 25 
-acodec libfaac -b:a 64k -f flv rtmp://192.168.1.12/live/dst

这样设置后延时会大大减小,但图像质量会变差得很明显;
延时大概在0.6 -- 0.8 秒

Fig-4 ultrafast-3

5. 设置zerolatency和ultrafast参数
ffmpeg命令行:
$ ./ffmpeg -i rtmp://192.168.1.12/live/src -tune zerolatency -vcodec libx264 -preset ultrafast -b:v 400k -s 720x576 -r 25 
-acodec libfaac -b:a 64k -f flv rtmp://192.168.1.12/live/dst

这样设置后延时还会减小,但图像质量会变差得很明显;
延时大概在0.2 -- 0.6 秒

Fig-5 zerolatency-ultrafast-2

总结:
ffmpeg设置转码延时的参数和步骤如下:
 . 关闭sync-lookahead
 . 降低rc-lookahead,但别小于10,默认是-1
 . 降低threads(比如从12降到6)
 . 禁用rc-lookahead
 . 禁用b-frames
 . 缩小GOP, 
 . 开启x264的 -preset fast/faster/verfast/superfast/ultrafast参数

 . 使用-tune zerolatency 参数



http://blog.chinaunix.net/uid-26000296-id-5747671.html

1 0
原创粉丝点击