Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have 33 audio files, each about 11 seconds long, and I'd like to merge them into one lossless file. How can I do this efficiently (i.e. without cut-pasting in Audacity 33 times)?

share|improve this question
add comment

4 Answers

up vote 3 down vote accepted

You can do this with ffmpeg and sox:

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

sox *.wav combined.wav
share|improve this answer
    
This worked perfectly! Thank you for the help. –  Fraxtil Aug 1 '10 at 0:11
add comment

Assuming you want to merge them alphabetically, by filename:

for f in ./*.{ogg,flac,mp3}; do echo "file '$f'" >> inputs.txt; done
ffmpeg -f concat -i inputs.txt output.wav

The for loop puts all the filenames in a file called inputs.txt, one-per-line, and the second one uses ffmpeg's concat demuxer to merge the files. It is possible to use printf instead of the loop like so:

printf "file '%s'\n" ./*.{ogg,flac,mp3} > inputs.txt

Assuming a modern shell, you can also use command substitution to do the whole thing in a single line.

ffmpeg -f concat -i <(printf "file '%s'\n" ./*.{ogg,flac,mp3}) output.wav
share|improve this answer
    
I believe this is the 'correct' ffmepg answer as it will not re-encode anything. –  Andrew Burns Aug 28 '13 at 0:59
add comment

If you start with only lossless files, you can use use shntool:

shntool join *.flac
share|improve this answer
add comment

It seems that the Sound Juicer that comes with Ubuntu writes broken FLAC files, which result in no MD5 signature in the file. MAKE A COPY of the directory containing the files you want to concatenate, then run the script below.
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

Then run
shntool join *.flac
as above.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.