An issue sweep: books no longer overwrite each other, large books keep every chapter, and MP4Box is no longer needed.
Heads up
- MP4Box (gpac) is no longer required. Chapters are now written with ffmpeg, so you can uninstall gpac if nothing else uses it. An
advanced.mp4box_pathleft in your config is ignored. - Chapters now show up in Apple Books. The chapter atom MP4Box wrote is one Apple Books does not read, so books built with earlier versions showed no chapters there. Rebuild a book to get them.
- Some books may get a different output name. A book whose tracks sit in a generic subfolder (
Book One/MP3/) is now named after its own folder (Book One.m4b) instead of the subfolder (MP3.m4b).
Fixed
Books could silently overwrite each other (#37)
Two books whose tracks sat in a generic subfolder both produced MP3.m4b, and the second replaced the first while the run reported success. Books are now named after their own folder when their only audio subfolder is generic (MP3, Audio, CD 1, ...). Any books that would still share an output name fail up front with a message naming both folders, before anything is written. Same-named books also no longer share a temp directory. Disc folders are now folded when they share a prefix (Title - Disc 01) or are bare numbers (01, 02), as long as they form a complete 1..n set.
Books with more than 255 tracks lost most of their chapters (#35)
MP4Box -chap stores the chapter count in one byte, so 300 tracks became 44 chapters, the last one covering the rest of the book. Chapters are now injected with ffmpeg, which writes all of them, and the count is read back from the finished file: a mismatch fails the book instead of reporting success.
Merging M4B parts with different formats produced a mistimed file (#29)
The merger now checks sample rate, channels and codec across parts before a lossless concat, and refuses the merge with a clear message on a mismatch. Thanks to @JKamsker for the fix.
Surround sources (#32)
Multichannel sources are now accepted and downmixed to a stereo audiobook, and the lossless bitrate target follows the channels actually written.
Added
--aac-encoder aac_mf (#36)
The Windows Media Foundation AAC encoder can be selected explicitly. It is not auto-detected yet, because Media Foundation documents only 44.1/48 kHz and 96 to 192 kbps. Feedback from Windows users is welcome on #36.
Security
- Upgraded
reqwestto 0.12, clearing theh2denial-of-service advisory (RUSTSEC-2026-0258) and dropping the unmaintainedrustls-pemfile(#34). - Replaced the deprecated
serde_yamlwithyaml_serde, the fork maintained by the YAML organization, clearing RUSTSEC-2024-0449. Config files are read and written exactly as before.
Internal
Clippy warnings now fail CI (#33).
Contributors
- @JKamsker: the M4B stream compatibility check (#29)
- @AlexIllinois2: the ffmetadata chapter writer now used for chapter injection (from #19)
Reported by
- @christopherpross: the overwritten books (#37), the lost chapters (#35) and the Media Foundation encoder (#36)