首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到瓶颈。Ffmpeg在4核\8线程CPU上不使用800%。为什么?

找到瓶颈。Ffmpeg在4核\8线程CPU上不使用800%。为什么?
EN

Stack Overflow用户
提问于 2014-08-28 14:02:48
回答 1查看 1.4K关注 0票数 1

我试图在E3-1245 V2 3.40GHz CPU、32 GB内存、2TB 7200 RAM磁盘(带有软Raid 1) debian 6服务器上对视频进行编码(使用V2编解码器)

E3-1245 V2有4个内核/8个线程,但是ffmpeg不能充分利用所有800%的数据,而且每个实例的利用率约为200%。

我读过许多其他线程,人们总是说“以并行模式运行少量ffmpeg进程”。

但是,在一个ffmpeg实例中,瓶颈究竟在哪里?CPU总线/ RAM freq速度??

代码语言:javascript
复制
exec ("/usr/bin/ffmpeg -i " . $fullpath . ' -pass 1 -passlogfile    
/var/www/scripts/twopass2.log -refs 1 -threads 0 -vcodec libx264 -bsf h264_mp4toannexb 
-s 1280x720 -aspect 16:9 -r 24 -g 48 -keyint_min 48 -sc_threshold 0 -x264opts 
"keyint=48:min-keyint=48:scenecut=0:stats=/var/www/scripts/stats2.log" -b:v 2300k -bf 0 
-profile:v baseline  -mixed-refs 0 -level 30 -maxrate 80M -bufsize 80M  -acodec aac -
async 1 -pix_fmt yuv420p -f mpegts  -strict -2 -ar 44100 -b:a 128k -map 0 -dn -sn -y 
/dev/null');

exec ("/usr/bin/ffmpeg -i " . $fullpath . ' -pass 2 -passlogfile 
/var/www/scripts/twopass2.log -refs 1 -threads 0 -vcodec libx264 -bsf h264_mp4toannexb 
-s 1280x720 -aspect 16:9 -r 24 -g 48 -keyint_min 48 -sc_threshold 0 -x264opts 
"keyint=48:min-keyint=48:scenecut=0:stats=/var/www/scripts/stats2.log" -b:v 2300k -bf 0 
-profile:v baseline  -mixed-refs 0 -level 30 -maxrate 80M -bufsize 80M  -acodec aac -
async 1 -pix_fmt yuv420p -f mpegts  -strict -2 -ar 44100 -b:a 128k -map 0 -dn -sn -
 flags  -global_header -f segment -segment_format mpegts -segment_time 10  -
segment_list /dev/null -y ' . $idpath . '2/%5d.ts');

我认为有争议的问题,但不确定。

我也尝试过这样的方法:

代码语言:javascript
复制
mkfifo pipe.y4m
ffmpeg -i input.mp4 -f yuv4mpegpipe -y pipe.y4m
and run
x264 -o dvd1.264 pipe.y4m

CPU的使用稍微好一点(大约150%的ffmpeg和350%的x264),但这一点也不是800%。

有办法加快编码速度吗?哪里是瓶颈呢?

EN

回答 1

Stack Overflow用户

发布于 2014-08-28 15:44:56

回答编辑:

@user3652819如果您的ffmpeg构建是用p线程支持编译的,那么-threads选项应该可以工作。如果ffmpeg即使使用-threads也不能使用您的CPU能力,这意味着有些编码或解码算法无法并行化。让我解释一下并行化的问题:

用手推车搬运沙子是一项完全并行的工作。你可以随意使用手推车。把一些人送上公共汽车不是一项可并行的工作。人们必须一个接一个地进去。

我通常运行更多的ffmpeg实例来处理更多的文件来使用我的免费CPU功能。

旧员额:

您在输入或输出中使用的一些编解码器的算法可能不够可并行。您使用的输入文件是什么?当您使用libx264编码的文件作为输入时,这个问题仍然存在吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25550774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档