If you have audiobooks on CD that you want to have on your iPod or iPhone, here are some rough steps to turn them into iDevice-compatible files. Along the way, I’ll show you what I learned about how those files are constructed, i.e. what works and doesn’t.
The first step, of course, is to rip the CD to audio files. I prefer to rip using abcde
to FLAC files. This preserves the full fidelity of the audio file (for now, anyway–we will compress the audio later).
$ abcde -o flac /dev/disk2
In my case above, the disc drive is /dev/disk2
, but if you don’t know which one yours is, you can use drutil
to check, as per the instructions here.
The next step is to combine the audio files into one file. For whatever reason, the option in abcde
to rip a CD as one file isn’t working for me and I haven’t had time to dive into why. So, instead, I use sox
to concatenate the files into one audio stream. You can do this by running sox and passing in as the first parameters the input files, in order. The last parameter is the output file.
sox 01.flac 02.flac 03.flac 04.flac 05.flac Disc1.flac
The next step is to update the metadata on the FLAC files that were the Discs. The reason for this is that we want the metadata to be up-to-date before we convert the file to the format that the iDevice is expecting. The metadata will be carried into the new file, so it is important to get it right at this stage.
- The
ARTIST
tag should be the book’s author, and should be consistent across all files - The
TRACKTOTAL
should be the number of discs - The
TRACKNUMBER
should be the disc number for each file - The
TITLE
should be descriptive, I use “Disc x”, replacing x with each disc number - The
ALBUM
should be the name of the book, and should be consistent across all files
Below is an example of me editing one disc file. I start by listing the information (I’ve trimmed a lot of the output), then I use metaflac --remove-tag
to remove each tag and metaflac --set-tag
to replace it with a new tag. I do this for each disc in the collection.
metaflac --list Disc4.flac
...
METADATA block #2
type: 4 (VORBIS_COMMENT)
is last: true
length: 177
vendor string: reference libFLAC 1.3.3 20190804
comments: 7
comment[0]: ARTIST=Brené Brown
comment[1]: ALBUM=Rising Strong [Disc 4]
comment[2]: TITLE=Track 1
comment[3]: DATE=2015
comment[4]: TRACKNUMBER=01
comment[5]: TRACKTOTAL=13
comment[6]: CDDB=b011fb0d
$ metaflac --remove-tag=ALBUM Disc4.flac
$ metaflac --set-tag=ALBUM="Rising Strong" Disc4.flac
$ metaflac --remove-tag=TITLE Disc4.flac
$ metaflac --set-tag=TITLE="Disc 4" Disc4.flac
$ metaflac --remove-tag=TRACKNUMBER Disc4.flac
$ metaflac --set-tag=TRACKNUMBER=04 Disc4.flac
$ metaflac --remove-tag=TRACKTOTAL Disc4.flac
$ metaflac --set-tag=TRACKTOTAL=07 Disc4.flac
Once the metadata is set, it’s time to convert the files so that the iDevice can read them. Here are the important points:
- The file must be MPEG-4 audio. I use the AAC format and that seems to work fine
- The filename extension MUST be
.m4b
which stands for “MP4 Book” (it won’t work otherwise)
I use ffmpeg
to convert the audio files.
$ ffmpeg -i Disc1.flac -c:a aac Disc1.m4b
Once the files are all converted, place them into one directory. Then, open the Books app on your Mac, import the directory (File > Add to Library), and you should see a new book in the collection.
You can sync the book to your iDevice through the Finder app once your iDevice is connected to your Mac via USB.
- Follow the prompts on your Mac and/or your iDevice to establish “Trust” between the devices
- Open the Finder
- Click on the iDevice
- Click “Audiobooks” in the top row of options
- Select “Sync audiobooks onto <devicename>”
- Choose what books (or all books) you would like to sync
- Apply