web-dev-qa-db-ja.com

オンザフライのffmpeg(パイプ)変換を並行して実行するにはどうすればよいですか?

次の変換を行いたい:

for f in *.m4a; do 
    (  ffmpeg -i "$f" -f wav - | opusenc --bitrate 38 - "${f%.m4a}.opus" ) & 
done

ffmpeg を直接使用してopusに変換できることはわかっていますが、この場合は新しいバージョンなので opusenc を使用したいと思います。

Ffmpegの後にopusencを実行すると正常に動作しますが、上記を実行しようとすると、Stoppedの束が表示され、何も起こりません。

2
Joschua

GNU Parallelを使用する場合、これは機能します:

parallel 'ffmpeg -i {} -f wav - | opusenc --bitrate 38 - {.}.opus' ::: *m4a

多分それで十分ですか?

CPUスレッドごとに1つのジョブしか実行しないという追加の利点があるため、1000個のファイルがある場合でも、マシンに過負荷がかかることはありません。

2
Ole Tange