我可以并行运行多少个FFmpeg命令实例?


18

我厌倦了并行运行8个命令来充分利用CPU并加速视频转换,如下所示:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/b.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/c.mp4 > /dev/null 2>&1  &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/d.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/e.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/f.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60  -f mp4 /mnt/g.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4  /mnt/h.mp4 > /dev/null 2>&1 &

其中2到3个被阻止。为什么会这样?这是FFmpeg的限制吗?我已经在16核和4核计算机EC2 c1.xlarge和cc2.8xlarge上进行了尝试。行为相同。我尝试了复杂的命令和简单的命令,但仍然相同,但停止了2或3个命令。


3
据我所知,FFmpeg本身不应该阻止您这样做。可能是外壳问题?
slhck

如果每个命令有不同的输入怎么办?我如何使它们独立,因为如果一停下来,它们都会停下来。
参孙

您找到使用多处理器的任何参数了吗?
Dr.jacky

您在这里“停下来”是什么意思?bash显示它们已暂停?
rogerdpack '16

Answers:


21

在回答最初的问题时,为什么某些作业会停止,命令行上的ffmpeg是交互式的。它不断在命令行上读取输入。为了让您在后台运行所有这些文件,您应该更改以下内容:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 > /dev/null 2>&1 &

对此:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 </dev/null > /dev/null 2>&1 &

添加的内容</dev/null告诉ffmpeg不要查找输入,并且所有作业都应在后台运行。


1
这是什么:2>&1
Dr.jacky

非常感谢你!我遇到了同样的问题,这很吸引人,请接受!
fr_andres支持MonicaCellio

3
@ Mr.Hyde我认识的聚会晚了,但是2>&1告诉错误流与烈性黑啤酒流到同一个地方-所以/ dev / null。这是的简写> /dev/null 2>/dev/null
berry120 '18

7

只需考虑一下您的命令:用一条命令锤击机器的简单得多的方法就是将所有内容连接到一行:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 \
 -f mp4 /mnt/b.mp4 \
 -f mp4 /mnt/c.mp4 \
 -f mp4 /mnt/d.mp4 \
 -f mp4 /mnt/e.mp4 \
 -f mp4 /mnt/f.mp4 \
 -f mp4 /mnt/g.mp4 \
 -f mp4  /mnt/h.mp4 > /dev/null 2>&1

您可能想要添加一个标志(取决于您的ffmpeg版本)以告知服务器使用所有可用处理器

-threads 0

供参考:http : //ffmpeg.org/trac/ffmpeg/wiki/Creating%20multiple%20outputs


我已经尝试过了,它不能有效地使用所有处理器。负载保持在20%到30%之间,超线程根本不被使用。
d33pika

2
也许与EC2机器有关?我只是在具有16个输出的16 xeon核心计算机上运行上述命令,这就是我得到的:htop屏幕截图
NublaII 2013年

您是否在使用最新版本的FFmpeg?
d33pika

@NublaII什么是> / dev / null 2>&1!
Dr.jacky

1
@ Mr.Hyde隐藏您的标准输出,并向您显示错误输出。阅读本:xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
Yuri Sucupira
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.