FFmpegコマンドのインスタンスをいくつ並行して実行できますか?


18

CPUを完全に活用し、ビデオ変換を高速化するために、8つのコマンドを並行して実行するのに疲れました。次のようなものです。

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

回答:


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 SupportsMonicaCellio

3
@ Mr.Hyde私が知っているパーティーに遅れましたが、2>&1はエラーストリームにスタウトストリームと同じ場所に行くように指示します-/ dev / nullです。の省略形です> /dev/null 2>/dev/null
berry120

7

コマンドに関する考え:単一のコマンドでマシンを叩くはるかに簡単な方法は、すべてを1行に連結することです。

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コアマシンで
-NublaII

FFmpegの最新バージョンを使用していますか?
d33pika

@NublaII> / dev / null 2>&1!?
Dr.jacky

1
@ Mr.Hyde標準出力を非表示にし、エラー出力を表示します。これを読んでください:xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
ユーリ・スキュピラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.