我有 33 个音频文件,每个文件大约 11 秒长,我想将它们合并为一个无损文件。我该如何高效地完成此操作(即无需在 Audacity 中进行 33 次剪切粘贴)?
答案1
您可以使用 和 来做到这ffmpeg
一点sox
:
for i in *.mp3 *.ogg *.flac
do
ffmpeg -i "$i" "$i.wav"
done
sox *.wav combined.wav
答案2
假设您想按文件名的字母顺序合并它们:
for f in ./*.{ogg,flac,mp3}; do echo "file '$f'" >> inputs.txt; done
ffmpeg -f concat -i inputs.txt output.wav
这为了循环将所有文件名放入名为inputs.txt的文件中,每行一个,第二个循环使用ffmpeg的连接解复用器合并文件。可以使用 printf 代替循环,如下所示:
printf "file '%s'\n" ./*.{ogg,flac,mp3} > inputs.txt
假设有一个现代 shell,您还可以使用命令替换在一行中完成整个操作。
ffmpeg -f concat -i <(printf "file '%s'\n" ./*.{ogg,flac,mp3}) output.wav
答案3
如果你只从无损文件开始,你可以使用什恩工具:
shntool join *.flac
答案4
Ubuntu 自带的 Sound Juicer 似乎写入了损坏的 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
。