I’ve been wracking my brains over this for the past few weeks and it finally struck me how to create an m4b audiobook with chapters that is compatible with your iPod, iTunes, VLC, etc. It was very simple once I figured it out:

Step 1:

encode the mp3 files to “aac” (mpeg4) using your favorite converter (I use ffmpeg):

ffmpeg -i "track1.mp3" -y -vn -acodec libfaac -ab 128k -ar 44100 -threads 3 -f mp4 track1.aac

Step 2:

Create a chapters file so that MP4Box can understand it:

* Common syntax : CHAPTERX=h:m:s[:ms or .ms] on one line and CHAPTERXNAME=name on the other – the order is not important but chapter lines MUST be declared sequencially (same X value expected for 2 consecutive lines).

track1.chapters:

CHAPTER1=00:00:00.000 CHAPTER1NAME=Chapter 001 CHAPTER2=00:30:00.139 CHAPTER2NAME=Chapter 002 CHAPTER3=01:00:00.728 CHAPTER3NAME=Chapter 003 CHAPTER4=01:30:01.269 CHAPTER4NAME=Chapter 004 CHAPTER5=02:00:01.858 CHAPTER5NAME=Chapter 005 CHAPTER6=02:30:02.375 CHAPTER6NAME=Chapter 006 CHAPTER7=03:00:02.964 CHAPTER7NAME=Chapter 007 CHAPTER8=03:30:03.553 CHAPTER8NAME=Chapter 008 CHAPTER9=04:00:04.094 CHAPTER9NAME=Chapter 009 CHAPTER10=04:30:04.683 CHAPTER10NAME=Chapter 010 CHAPTER11=05:00:05.224 CHAPTER11NAME=Chapter 011 CHAPTER12=05:30:05.765 CHAPTER12NAME=Chapter 012 CHAPTER13=05:46:14.106 CHAPTER13NAME=Chapter 013 CHAPTER14=06:16:14.143 CHAPTER14NAME=Chapter 014 CHAPTER15=06:46:14.732 CHAPTER15NAME=Chapter 015 CHAPTER16=07:16:15.249 CHAPTER16NAME=Chapter 016 CHAPTER17=07:46:15.790 CHAPTER17NAME=Chapter 017 CHAPTER18=08:16:16.331 CHAPTER18NAME=Chapter 018 CHAPTER19=08:46:16.920 CHAPTER19NAME=Chapter 019 CHAPTER20=09:16:17.460 CHAPTER20NAME=Chapter 020 CHAPTER21=09:46:18.050 CHAPTER21NAME=Chapter 021 CHAPTER22=10:16:18.639 CHAPTER22NAME=Chapter 022

Step 3:

Add the chapters to the audio file (creates Nero format chapter markers):

MP4Box -add track1.aac -chap track1.chapters test.mp4

Step 4:

Convert the Nero chapter markers to Quicktime chapter markers using mp4chaps from the mp4v2 project (you will want v1.9.1 or higher):

mp4chaps --convert --chapter-qt test.mp4

converting chapters in file "test.mp4" from Nero to QuickTime

Step 5:

Rename the file from .mp4 to .m4b extension so iTunes will see it as an audiobook:

mv test.mp4 test.m4b

Proof that it works:

and VLC showing the chapters:



Of course, we aren’t putting in any tags such as “author” or “genre” in this example. Use your favorite tags editor to do so.