次の変換を行いたい:
for f in *.m4a; do
( ffmpeg -i "$f" -f wav - | opusenc --bitrate 38 - "${f%.m4a}.opus" ) &
done
ffmpeg を直接使用してopusに変換できることはわかっていますが、この場合は新しいバージョンなので opusenc を使用したいと思います。
Ffmpegの後にopusencを実行すると正常に動作しますが、上記を実行しようとすると、Stopped
の束が表示され、何も起こりません。
GNU Parallelを使用する場合、これは機能します:
parallel 'ffmpeg -i {} -f wav - | opusenc --bitrate 38 - {.}.opus' ::: *m4a
多分それで十分ですか?
CPUスレッドごとに1つのジョブしか実行しないという追加の利点があるため、1000個のファイルがある場合でも、マシンに過負荷がかかることはありません。