リアルタイムffmpeg(パイプライン)変換を並列に実行するには?

リアルタイムffmpeg(パイプライン)変換を並列に実行するには?

次の変換を実行したいと思います。

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

私は使用できることを知っていますffmpeg作品に直接変換しましたが、使いたいです。オプセンコこの場合は最新バージョンだからです。

ffmpegの後にopusencを実行すると正常に動作しますが、上記のコマンドを実行しようとすると、それらの多くが表示され、Stopped何も起こりません。

ベストアンサー1

GNU Parallelを使用すると、次のように動作します。

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

たぶんこれほど十分ではないだろうか?

CPUスレッドごとに1つのタスクしか実行しないという利点があるため、1000個のファイルがあるとコンピュータに過負荷がかかりません。

おすすめ記事