mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-31 00:48:39 +02:00
[Bug]: Edge version: /items/{libraryItemID}/play causes API freeze and high memory usage after ~3 calls with large library items #3298
Closed
opened 2026-04-25 00:14:48 +02:00 by adam
·
8 comments
No Branch/Tag Specified
master
auth_sessions_enhancements
account_sessions_table
logout_all_devices
pw_change_invalidates_sessions
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.36.0
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 labels
bug
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/audiobookshelf#3298
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.
Originally created by @yunxiuGona on GitHub (Apr 14, 2026).
What happened?
Environment:
OS: fnos
Deployment: Docker
Version: Audiobookshelf edge
Issue:
My library contains several books, each with around 3000 items. After calling /audiobookshelf/api/items/${libraryItemID}/play approximately 3 times, the entire audiobookshelf API becomes unresponsive and extremely slow, with very high memory consumption.
At this time, the Docker console log keeps repeatedly outputting a large number of lines:
“INFO: [STREAM-CHECK] Check Files 34493 of 146757 23.50% Furthest Segment”
What did you expect to happen?
No system lag occurs, and the API can be called normally.
Steps to reproduce the issue
My library contains several books, each with around 3000 items. After calling /audiobookshelf/api/items/${libraryItemID}/play
Audiobookshelf version
v2.26.0.
How are you running audiobookshelf?
Docker
What OS is your Audiobookshelf server hosted from?
Linux
If the issue is being seen in the UI, what browsers are you seeing the problem on?
None
Logs
Additional Notes
No response
@nichwall commented on GitHub (Apr 14, 2026):
The latest server version is
2.33.1. Please update to the latest server version and see if this issue is fixed.@yunxiuGona commented on GitHub (Apr 14, 2026):
I tried pinning the version of the Docker image:
docker pull advplyr/audiobookshelf:2.33.1
After running it, the issue still persists after several API calls.
I also tried:
docker pull advplyr/audiobookshelf:edge
The issue still exists.
@Vito0912 commented on GitHub (Apr 14, 2026):
What does the version say at the bottom left? Pulling alone will not update your container.
Apart from that, everything described here is not a bug, but just how transcoding works. You probably have a very weak server. Transcoding is a very demanding task, especially on weak servers.
Transcoding only happens if your device cannot play the file you uploaded. So if it's a standard format, the file is probably corrupted and you should either re-encode it or try to get the file again in a non-corrupted way. If it's an exotic codec, then it is expected to transcode. You can encode it first to a more supported format.
@yunxiuGona commented on GitHub (Apr 14, 2026):
Thank you very much for your reply. As I understand it, the audio files should have already been transcoded during the scanning process, right? Will the server keep transcoding during playback?
My current usage scenario is as follows:
Call the /audiobookshelf/api/items/${libraryItemID}/play API endpoint to retrieve media.audioFiles from the response.
Use an Android media player to directly play the http://xxx.mp3 file from audioFiles.
Then report the playback progress to the server every 3 minutes via the /audiobookshelf/api/session/$playItemID/sync endpoint.
The problem I’m facing now is: after calling the /audiobookshelf/api/items/${libraryItemID}/play endpoint a few times, the entire Audiobookshelf freezes. The corresponding web page at http://xxx::13378 becomes inaccessible, and the API can no longer be called. The issue does not recover even after a long wait, and I can only fix it by restarting the Docker container and accessing it again.
May I ask whether my usage scenario will trigger automatic transcoding on the server when the play endpoint is called?
Additionally, here is my personal NAS configuration information:
The version information is as follows.
@Vito0912 commented on GitHub (Apr 14, 2026):
That explains it probably. As said the weak performance comes from the weak cpu. This is expected. But why it completely goes unresponsive is unknown. Do you start multiple sessions so multiple cores are occupied?
You as an app developer are responsible to communicate the playable containers you device supports. E.g. check what the web client makes for an request. If you miss that and do not set force direct play, it will transcode.
Transcodes are not saved and also not generated on scanning. Transcodes are solely optional for devices that do not support a container/codec and are generated on the fly.
As for why the server goes completely unresponsive I am not sure. Transcoding will only use one core. You could check top while running e.g.
@yunxiuGona commented on GitHub (Apr 14, 2026):
Could you please help clarify these questions again?
1、If I start playback by calling /audiobookshelf/api/items/${libraryItemID}/play, do I need to manually call another API to end the playback process when exiting the player? Or will the server release resources automatically? Because on mobile apps, users may kill the process directly, which could leave the playback instance unreleased.
2、Will the parameters I pass when calling /audiobookshelf/api/items/${libraryItemID}/play (such as deviceId, model, sdkVersion) affect the server’s decoding method? Also, how should I configure it if I want decoding to be done on the app side instead of the server side?
Thank you very much.
@Vito0912 commented on GitHub (Apr 14, 2026):
Please consult the docs: https://api.audiobookshelf.org/#play-a-library-item-or-podcast-episode
It states everything and also states
These docs are out-of-date and I wouldn't normally recommend looking at them, as you can always check the web client what it does or check the repos code directly. In some cases the docs are wrong
@yunxiuGona commented on GitHub (Apr 14, 2026):
Thanks