web-dev-qa-db-ja.com

多くのMP3、OGG、およびFLACファイルを1つのWAVまたはFLACに結合します

33個のオーディオファイルがあり、それぞれの長さは約11秒ですが、それらを1つのロスレスファイルにマージしたいと思います。どうすればこれを効率的に行うことができますか(つまり、Audacityで33回カットペーストせずに)?

9
Fraxtil

これは、ffmpegおよびsoxで実行できます。

for i in *.mp3 *.ogg *.flac
do
  ffmpeg -i "$i" "$i.wav"
done

sox *.wav combined.wav
6

それらをファイル名でアルファベット順にマージしたいとします。

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番目のループは ffmpegconcat 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
8
evilsoup

ロスレスファイルのみから始める場合は、use shntool :を使用できます。

shntool join *.flac
3
Raphael

ただし、shntool結合は、特に指定しなくても、照合順序(アルファベット順)で結合することを要求することに注意してください。

shntool join fileB.flac fileA.flac

aをBの前に置きます。

最初にファイルの名前を変更するか、-rパラメーターを使用できます(「-rask」は順序の入力を求めます)。

率直に言って、これは苛立たしいと思います...

また、出力モードを強制することもできるため、FLACに参加している場合は次のようになります。

shntool join *.flac -o flac

joined.wavではなくjoined.flacになります

1
dgrb

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
上記のように。

1
Brent Fisher