33個のオーディオファイルがあり、それぞれの長さは約11秒ですが、それらを1つのロスレスファイルにマージしたいと思います。どうすればこれを効率的に行うことができますか(つまり、Audacityで33回カットペーストせずに)?
これは、ffmpeg
およびsox
で実行できます。
for i in *.mp3 *.ogg *.flac
do
ffmpeg -i "$i" "$i.wav"
done
sox *.wav combined.wav
それらをファイル名でアルファベット順にマージしたいとします。
for f in ./*.{ogg,flac,mp3}; do echo "file '$f'" >> inputs.txt; done
ffmpeg -f concat -i inputs.txt output.wav
forループは、すべてのファイル名をinputs.txtというファイルに1行に1つずつ配置し、2番目のループは ffmpeg の concat demuxer を使用して、ファイルをマージします。次のように、ループの代わりにprintfを使用することができます。
printf "file '%s'\n" ./*.{ogg,flac,mp3} > inputs.txt
最新のシェルを想定すると、コマンド置換を使用してすべてを1行で実行することもできます。
ffmpeg -f concat -i <(printf "file '%s'\n" ./*.{ogg,flac,mp3}) output.wav
ロスレスファイルのみから始める場合は、use shntool :を使用できます。
shntool join *.flac
ただし、shntool結合は、特に指定しなくても、照合順序(アルファベット順)で結合することを要求することに注意してください。
shntool join fileB.flac fileA.flac
aをBの前に置きます。
最初にファイルの名前を変更するか、-rパラメーターを使用できます(「-rask」は順序の入力を求めます)。
率直に言って、これは苛立たしいと思います...
また、出力モードを強制することもできるため、FLACに参加している場合は次のようになります。
shntool join *.flac -o flac
joined.wavではなくjoined.flacになります
Ubuntuに付属のSoundJuicerが壊れたFLACファイルを書き込んでいるため、ファイルにMD5署名がないようです。連結するファイルを含むディレクトリのコピーを作成してから、以下のスクリプトを実行します。echo fixing broken FLAC files
find . -type f|grep .flac$ |while read file
do
flac -f --decode "$file" -o temp.wav
flac -f -8 temp.wav -o "$file"
done
rm temp.wav
次に実行しますshntool join *.flac
上記のように。