What are the command line options for afconvert?
macOS includes a tool called afconvert
which describes itself this way in the man page.
Audio File Convert will convert a source audio file to a new audio file with the specified file and data types
However, that's the entire man page. What are the command line options required and supported by afconvert? What are some basic examples of how to convert audio files back and forth?
Solution 1:
Audio File Convert exports to 20 audio file formats and a multitude of codecs, all of which are shown with the -hf
option.
Uncompressed Audio
File formats: AIFC
AIFF
NeXT
Sd2f
WAVE
RF64
The original formats for storing audio files were all uncompressed because these are easy to work with, and can be played by even very early CPUs. However, uncompressed audio files are very large, easily going up to 10 MB/minute. These formats all share similar codec options like I8
BEI16
BEI24
BEI32
BEF32
BEF64
. Smaller numbers give smaller files, but larger numbers give higher quality. If you're not sure what to choose, go with BEI32
or LEI32
.
Compressed Audio
File formats: 3gpp
3gp2
adts
ac-3
amrf
m4af
m4bf
caff
ec-3
flac
mp4f
Not every codec is supported by every file format, but you can use this as a guide to get started choosing your codec. Once you've chosen a codec, you can look at the output of afconvert -hf
to pick a suitable container file format.
-
aac
MPEG-4 Low Complexity AAC -
aace
MPEG-4 AAC Enhanced Low Delay (without SBR) -
aacf
MPEG-4 AAC Enhanced Low Delay (with SBR) -
aacg
-
aach
MPEG-4 High Efficiency AAC -
aacl
MPEG-4 AAC Low Delay -
aacp
MPEG-4 High Efficiency AAC Version 2 -
ac-3
AC-3 -
alac
Apple Lossless -
alaw
aLaw 2:1 -
drms
Apple DRM -
ec-3
-
flac
Free Lossless Audio Codec -
paac
-
pac3
-
pec3
-
samr
sawb
-
QDM2
QDesign2 Music -
QDMC
QDesign Music -
Qclp
QUALCOMM PureVoice -
Qclq
Qualcomm QCELP
(Note: I have excluded the MPG formats such as MPG3/MP3 from this list because they just do not work.)
Syntax
Once you've chosen a file format and codec, you run afconvert like this:
afconvert -f FORMAT -d CODEC SOURCEFILE [-o DESTINATIONFILE]
It is necessary to specify both the file format and the codec, otherwise an error is shown. If you omit the -o
option, afconvert will pick a name and extension based on the other inputs.
Examples
If you have an audio file called MyAudio.m4a
you could try these commands.
# AIFF
afconvert -f AIFF -d BEI32 MyAudio.m4a -o MyAudio.aiff
# WAVE
afconvert -f WAVE -d LEI32 MyAudio.m4a -o MyAudio.wav
# Apple Lossless
afconvert -f m4af -d alac MyAudio.m4a -o MyAudio.m4a
# FLAC
afconvert -f flac -d flac MyAudio.m4a -o MyAudio.flac
# AAC
afconvert -f mp4f -d aac MyAudio.m4a -o MyAudio.mp4