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参数
测试环境:
. 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
- ffmpeg的转码延时测试与设置优化
- ffmpeg的转码延时测试与设置优化
- ffmpeg的转码延时测试与设置优化
- ffmpeg的转码延时测试与设置优化
- ffmpeg与x264编码指南 转码优化
- FFmpeg MP3解码器的研究与优化
- timer的延时和优化
- 基于opencl的ffmpeg视频优化处理设计与实现
- ffmpeg编码延时问题解决
- Android ViewPager与Fragment的延时切换,取消预加载优化
- 滤波器的响应与延时
- FFmpeg转码指令(测试通过)
- FFMPEG的编码延时,avcodec_encode_video2出帧慢,实时编码
- ffmpeg+x264编码,AVCodecContext的gop_size与max_b_frames设置无效
- rt5350 h264 sn9c291 的RTSP 延时测试
- Espresso IdlingResource 测试延时操作的使用
- SRS rtmp http-flv流低延时设置、测试
- ffmpeg学习---11.ffmpeg的流媒体服务器与播放器的设置
- 域名直接访问到项目
- ServletContext
- Android studio 之ANalyze 清理无用资源
- POI导出EXCEL经典实现
- Redis学习笔记(十一)Redis-benchmark为Redis性能测试工具
- ffmpeg的转码延时测试与设置优化
- android adt版本号问题
- Intellij Idea中Backspace无法使用,Insert和全选错乱等问题的解决
- atom 阿童木怎么加snippet片段,函数注释
- Log4j日志在java项目中的使用
- nodejs连接sqlserver数据库简单封装-mssql模块
- 几个简单的shell脚本
- HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全详解
- Log4j日志在java项目中的使用