Bug-fix release addressing three reported issues, plus a silent output-quality bug found along the way.
Fixed
M4B files merged in the wrong order (#31)
Audiobooks whose track number is a filename prefix (001 Author (Year) Title.m4b) were concatenated in raw filesystem order, producing an audiobook that started partway through. The sort key came from a suffix-anchored pattern that matched nothing on these names, so every file collapsed to the same key and the sort silently did nothing. M4B files now use the same natural ordering already applied to MP3 tracks, and are sorted for every book rather than only for folders matching a merge pattern.
Merge results missing from the batch summary (#31)
A run consisting only of M4B merges reported Batch complete: 0 successful, 0 failed even when the merge succeeded.
Build aborted on a library containing a directory named like an audio file (#30)
A subdirectory whose name ends in .mp3, .m4a or .m4b made the library root look like a single audiobook, stopping the run before any book was processed. One such folder was enough to block a library of over a thousand books. The detection helpers and the scanner disagreed about what counts as an audio file; they now share one definition. This also fixes .flac folders not being recognised as single audiobooks.
FLAC and other lossless sources failing with "No bitrate found" (#18)
FLAC stores no bitrate in its stream headers, so ffprobe reports it only on the container. Numeric ffprobe fields are now accepted whether reported as JSON strings or numbers, in both the bitrate and duration readers, and a missing bitrate now produces an error naming the field rather than one that sends you to check your FLAC install.
A single unreadable track aborted the whole batch (#18)
One bad file in the first book stopped a 60-book run. Unreadable tracks are skipped with a warning and reported in the summary; a book fails only when none of its tracks can be read.
Analyzer re-sorted tracks lexicographically
Tracks were re-sorted with a plain path comparison, placing track10 before track2 and potentially reordering a book the scanner had already ordered correctly.
Changed
Lossless sources no longer transcode at the source bitrate
FLAC, ALAC and WAV probe at 900-1000+ kbps, and that rate was passed straight to the AAC encoder, producing enormous files at a bitrate AAC cannot meaningfully use. This failed silently: anyone whose files reported a container bitrate was not hitting the #18 error at all, just quietly getting bloated output. Lossless sources now target 192 kbps AAC (stereo) or 128 kbps (mono) unless an explicit --quality preset is given. Lossy sources keep their existing bitrate.
Contributors
- @JKamsker — diagnosed the analyzer track-ordering bug and wrote the same fix in #25, weeks before it was rediscovered and shipped here
Reported by
- @virtualistic — the M4B merge ordering bug (#31)
- @christopherpross — the library scan abort, with a precise reproduction that made it quick to confirm (#30)
- @dkuester — the FLAC transcode failure (#18)
Full changelog: https://github.com/juanra/audiobook-forge/blob/main/CHANGELOG.md