Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7894054
  • 博文数量: 701
  • 博客积分: 2150
  • 博客等级: 上尉
  • 技术积分: 13233
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:28
个人简介

天行健,君子以自强不息!

文章分类

全部博文(701)

文章存档

2019年(2)

2018年(12)

2017年(76)

2016年(120)

2015年(178)

2014年(129)

2013年(123)

2012年(61)

分类: 云计算

2016-07-13 14:10:22

我测试了下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 参数

阅读(18274) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

musx012302016-10-31 13:47:57

特意祖册一个号,等了5分钟来感谢楼主。