mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-30 23:40:40 +02:00
[Bug]: Very large M4B file not able to have metadata embedded #2891
Closed
opened 2026-04-25 00:11:38 +02:00 by adam
·
2 comments
No Branch/Tag Specified
master
book_tags_genres_dedupe
episode_download_fallback
Issue-4540-SortBy-StartedDate-and-FinishedDate
episode_meta_tagging
fix_authorize_race_condition
redirect_transcode_requests
progress_updated_sort
fix_ereader_socket_event
fix_change_empty_root_password
fix_podcast_session_track_index
fix_set_token
session_modal_user
localize_durations
fix_oidc_create_user
jwt_auth_refactor
fix_scanner_deleting_single_file_books
fix_mediaprogress_updatedat_2
experimental_next_client
podcast_episode_duration
episode-timestamps-clickable
book_author_secondary_sort_title
podcast_useragents
pathexists_user_access
fix_pathexists_join
book_author_secondary_sort
clean_duplicate_mediaprogress
sanitize_html_description
trix_prevent_attachments
check_path_api_fix
fix_mediaprogress_updatedat
increase_express_json_limit
fix_dockerfile_nunicode
search_episodes
audiobook_tools_update
episode_secondary_sorts
hls_stream_url_update
new_session_track_endpoint
audiobook_tools_enhancements
watcher_rescans_update
player_track_tooltip
fix_exclude_prefixes_crash
socket_item_events
fix_podcast_episode_scanner_promise
new_stats_controller
count_cache_for_userpermissions
parsing-opf-v3
validate_migration_files
fix-quick-match-all-crash
fix-chapter-end-sleep-timer
stringify_sequelize_query
remove-col-ambiguity
fix_next_prev_edit_description
details_trim_whitespace
fix_content_url_basepath
fix_logger_fatal
progress_bar_visibility
batch-edit-populate-map-details
feed_generator_updates
bookmark-modal-updates
migrate-library-item-in-scanner
migrate-new-library-items
migrate-podcasts-new-library-item-2
migrate-podcasts-new-library-item
fix-remove-episode-from-playlist
playback-session-use-new-library-item
refactor-library-item
fix-heatmap-caption
feed-episodes-upsert
share-media-player-media-session-api
remove-old-playlist
remove_old_collection_object
plugin-implementation-demo
feed_migration
refactor-feeds-from-item
fix_remove_authors_no_books
v2.17.3-fk-constraints-migration
migrations-first-upgrade
sqlite_2
feature/nuxt-target-server
waveform
sqlite
playlists
video
v2.35.1
v2.35.0
v2.34.0
v2.33.2
v2.33.1
v2.33.0
v2.32.1
v2.32.0
v2.31.0
v2.30.0
v2.29.0
v2.28.0
v2.27.0
v2.26.3
v2.26.2
v2.26.1
v2.26.0
v2.25.1
v2.25.0
v2.24.0
v2.23.0
v2.22.0
v2.21.0
v2.20.0
v2.19.5
v2.19.4
v2.19.3
v2.19.2
v2.19.1
v2.19.0
v2.18.1
v2.18.0
v2.17.7
v2.17.6
v2.17.5
v2.17.4
v2.17.3
v2.17.2
v2.17.1
v2.17.0
v2.16.2
v2.16.1
v2.16.0
v2.15.1
v2.15.0
v2.14.0
v2.13.4
v2.13.3
v2.13.2
v2.13.1
v2.13.0
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.11.0
v2.10.1
v2.10.0
v2.9.0
v2.8.1
v2.8.0
v2.7.2
v2.7.1
v2.7.0
v2.6.0
v2.5.0
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.23
v2.2.22
v2.2.21
v2.2.20
v2.2.19
v2.2.18
v2.2.17
v2.2.16
v2.2.15
v2.2.14
v2.2.13
v2.2.12
v2.2.11
v2.2.10
v2.2.9
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.5
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.24
v2.0.23
v2.0.22
v2.0.21
v2.0.20
v2.0.19
v2.0.18
v2.0.17
v2.0.16
v2.0.15
v2.0.14
v2.0.13
v2.0.12
v2.0.11
v2.0.10
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v1.7.2
v1.7.1
v1.7.0
v1.6.0
v1.5.5
v1.5.0
v1.4.11
v1.4.9
v1.4.7
v1.4.6
v1.4.4
v1.4.2
v1.4.0
v1.4.1
v1.3.4
v1.3.3
v1.3.1
v1.2.8
v1.2.6
v1.2.5
v1.2.4
v1.2.1
v1.1.15
v1.1.14
v1.1.13
v1.1.12
v1.1.11
v1.1.10
v1.1.9
v1.1.8
v1.0.0
0.9.61-beta.0
0.9.61-beta
Labels
Clear labels
authentication
backlog
bug
chapter editor
config-issue
ebooks
encoding/embedding
enhancement
help wanted
listening sessions & progress
planned
possible plugin
progress sync
pull-request
sorting/filtering/searching
unable to reproduce
upload
users & permissions
waiting
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/audiobookshelf#2891
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @anakinsleftleg on GitHub (Jul 14, 2025).
What happened?
I wanted to update the chapters on this massive multi-work collection. It comes as one file. I'm able to set the chapters in ABS but when I want to embed the metadata, it fails with the following debug output. I admit that i've tried using
tonemanually and it produced the same problem. I've also tried ffmpeg directly and wasn't able to get it to work. also tried MP4box and same. nothing seems to be able to write to this file without either corrupting it as below, or simply not applying the chapter data. Logs are below.I was thinking, for files like this, which there are numerous COLLECTED WORKS audiobooks, it would be nice to have a decent gui to have all the chapters there (which you already have) and then allow to split the file into multiple smaller files at specific chapter positions while retaining the bookmarks. basically the reverse of the "combine into a single m4b file" function.
This doesn't have anything to do with this request, and is out of scope, but I would like to be able to split these collected works files into their separate books and use each of those with their correct chapters as individual entries in the library.
What did you expect to happen?
Metadata to be embedded without error.
Steps to reproduce the issue
Audiobookshelf version
2.25.1
How are you running audiobookshelf?
Docker
What OS is your Audiobookshelf server hosted from?
Windows
If the issue is being seen in the UI, what browsers are you seeing the problem on?
None
Logs
Additional Notes
No response
@advplyr commented on GitHub (Jul 14, 2025):
I don't think this has to do with the file size. If every other tool has failed to work with this file then my guess is it is corrupt.
I just tested this with an 8GB audiobook (4 copies of War and Peace merged) and it had no issue embedding.
The logs show that ffmpeg can't open the file, so Abs wouldn't be able to split the file even if that feature were added.
There is an open feature request for that though: https://github.com/advplyr/audiobookshelf/issues/1356
@anakinsleftleg commented on GitHub (Jul 17, 2025):
@advplyr I wanted to give you an update. I have no idea what changed, other than filename but there was nothing wrong with that to begin with (length or anything). Applying the Quick Embed or Full backup embed both work now but with a significant caveat!!
Your command to apply metadata will apply chapters in both standards (Nero (Menu#2) and QuickTime (Menu#1)). The problem is that Nero only supports 255 maximum chapters. QuickTime as far as I know has no limit. But most players will default to the Nero listing if it exists (like VLC). If it doesn't exist, it will use the QT chapters. A tool like MediaInfo (available as console app or gui) will show both types or one or the other. It only shows up to 512 of QT chapters even if there are more, which can be confirmed by
ffprobe -i input.m4b -show_chapters.My point in all this is the following. If the chapter count exceeds 255, I would recommend that audiobookshelf uses a slightly modified version of the metadata command which disables the Nero chapters. Insert
-movflags disable_chplinto the command args to do this. So numChapters > 255 then use that, if 255 or less, no change needed to the command. It will populate both types of chapters.Current command:
Modified command for >255 chapters:
Also, one of the things I noticed and didn't see anywhere as to why that is is the fact that you have
-map_metadata 1 -map_metadata 0which would populate the metadata with info from ABS first then overwrite it and fill in any missing fields with the original file values. To me, it seems like if anything it should be 0 first then 1 last so that the ABS metadata overwrites anything from the file that is common. Or even just the ABS data only, but I understand there might be reasons for safety to have both. Still, I would want the ABS stuff to always take precedent which means coming last, for any common fields.