iOS - Unable to download/play local files #679

Closed
opened 2026-04-24 23:34:03 +02:00 by adam · 17 comments
Owner

Originally created by @slowspike on GitHub (Aug 29, 2023).

Steps to reproduce

  1. Download any audiobook (.mp3 or .m4b)
  2. Try to play local files
  3. Receive error "Playback Failed: Playback Error"

Expected behaviour

  • Tell us what should happen
    File should download and be playable.

Actual behaviour

  • Tell us what happens
    File seems to download too fast for the file size and does not play. Streaming the file works on the iOS app. Using the app on Android, the download is successful and local playback works.

Environment data

Audiobookshelf Version: app v0.9.65-beta/server v2.3.3

  • Android App?
  • iOS App?

iOS Issue

iOS Version: 16.6

iPhone model: iPhone 13 Pro

Originally created by @slowspike on GitHub (Aug 29, 2023). ### Steps to reproduce 1. Download any audiobook (`.mp3` or `.m4b`) 2. Try to play local files 3. Receive error "Playback Failed: Playback Error" ### Expected behaviour - Tell us what should happen File should download and be playable. ### Actual behaviour - Tell us what happens File seems to download too fast for the file size and does not play. Streaming the file works on the iOS app. Using the app on Android, the download is successful and local playback works. ### Environment data Audiobookshelf Version: app v0.9.65-beta/server v2.3.3 - [ ] Android App? - [X] iOS App? #### iOS Issue iOS Version: 16.6 iPhone model: iPhone 13 Pro
adam added the bug label 2026-04-24 23:34:03 +02:00
adam closed this issue 2026-04-24 23:34:03 +02:00
Author
Owner

@nichwall commented on GitHub (Aug 29, 2023):

Is this a new install?

There were some reports of issues like this after updating the server, and resetting the iOS app fixed the issues.

@nichwall commented on GitHub (Aug 29, 2023): Is this a new install? There were some reports of issues like this after updating the server, and resetting the iOS app fixed the issues.
Author
Owner

@slowspike commented on GitHub (Aug 29, 2023):

Yes, both server and apps are new installs.

I tried restarting the iphone and uninstalling/reinstalling app, but downloads still aren't working on ios. With the android app, I get a confirmation box asking if I want to download and I can also see the download in the server logs.

@slowspike commented on GitHub (Aug 29, 2023): Yes, both server and apps are new installs. I tried restarting the iphone and uninstalling/reinstalling app, but downloads still aren't working on ios. With the android app, I get a confirmation box asking if I want to download and I can also see the download in the server logs.
Author
Owner

@advplyr commented on GitHub (Aug 29, 2023):

What is the file format? It can also be helpful to use the web UI to get the full probe data

@advplyr commented on GitHub (Aug 29, 2023): What is the file format? It can also be helpful to use the web UI to get the full probe data
Author
Owner

@slowspike commented on GitHub (Aug 29, 2023):

I've tried both .m4b and .mp3 on ios. I just tested downloading using the web UI and that works as well.

@slowspike commented on GitHub (Aug 29, 2023): I've tried both `.m4b` and `.mp3` on ios. I just tested downloading using the web UI and that works as well.
Author
Owner

@advplyr commented on GitHub (Aug 29, 2023):

Are you using a reverse proxy or downloading from local ip?

@advplyr commented on GitHub (Aug 29, 2023): Are you using a reverse proxy or downloading from local ip?
Author
Owner

@slowspike commented on GitHub (Aug 30, 2023):

I have been using a reverse proxy (nginx proxy manager) and have websockets support on. I just tried using a local ip in the app instead and the download works as intended. Any suggestions for settings to tweak?

@slowspike commented on GitHub (Aug 30, 2023): I have been using a reverse proxy (nginx proxy manager) and have websockets support on. I just tried using a local ip in the app instead and the download works as intended. Any suggestions for settings to tweak?
Author
Owner

@ghost commented on GitHub (Sep 2, 2023):

For the website that you are using reverse proxying, are you also running it through Cloudflare as well? I ask because a lot of people do and Cloudflare only allows up to 100MB uploads on the free plan, which means you won't be able to upload to your server or download to the app if the file size is over 100MB.

@ghost commented on GitHub (Sep 2, 2023): ~~For the website that you are using reverse proxying, are you also running it through Cloudflare as well? I ask because a lot of people do and Cloudflare only allows up to 100MB uploads on the free plan, which means you won't be able to upload to your server or download to the app if the file size is over 100MB.~~
Author
Owner

@slowspike commented on GitHub (Sep 2, 2023):

I do use Cloudflare, but I am able to download the same files using the android app.

@slowspike commented on GitHub (Sep 2, 2023): I do use Cloudflare, but I am able to download the same files using the android app.
Author
Owner

@ghost commented on GitHub (Sep 2, 2023):

That is strange. For me, it's impossible to download any audiobooks on my 4 Android devices if I connect via my website that routes through the Cloudflare proxy due to the 100MB limit, which is understandable. I have to always use a direct connection (or I could untoggle my Cloudflare proxy).

Maybe your Android device is bypassing it somehow, because a 100MB limit is a 100MB limit.

@ghost commented on GitHub (Sep 2, 2023): ~~That is strange. For me, it's impossible to download any audiobooks on my 4 Android devices if I connect via my website that routes through the Cloudflare proxy due to the 100MB limit, which is understandable. I have to always use a direct connection (or I could untoggle my Cloudflare proxy).~~ ~~Maybe your Android device is bypassing it somehow, because a 100MB limit is a 100MB limit.~~
Author
Owner

@slowspike commented on GitHub (Sep 2, 2023):

I just tried downloading through the web UI using the reverse proxy and it works as well.

My understanding is the 100MB limit is per request and chunking uploads is a way to share larger files. For example, I'm able to upload and share files much larger than 100MB with Nextcloud using a reverse proxy, but I did have to change some settings in Nextcloud, like client_max_body_size.

Are you able to download through the web UI when using the reverse proxy?

@slowspike commented on GitHub (Sep 2, 2023): I just tried downloading through the web UI using the reverse proxy and it works as well. My understanding is the 100MB limit is per request and chunking uploads is a way to share larger files. For example, I'm able to upload and share files much larger than 100MB with Nextcloud using a reverse proxy, but I did have to change some settings in Nextcloud, like `client_max_body_size`. Are you able to download through the web UI when using the reverse proxy?
Author
Owner

@ghost commented on GitHub (Sep 2, 2023):

Disregard my comments... Yes, downloading via the web UI works, and also tested 3 of my android devices and the app works now. Was not working a couple months ago and I didn't try it again after updates. I just assumed it was Cloudflare.

@ghost commented on GitHub (Sep 2, 2023): Disregard my comments... Yes, downloading via the web UI works, and also tested 3 of my android devices and the app works now. Was not working a couple months ago and I didn't try it again after updates. I just assumed it was Cloudflare.
Author
Owner

@slowspike commented on GitHub (Sep 2, 2023):

I'm hoping that downloads in iOS (in my particular case) will be ironed out in later versions of the app.

@slowspike commented on GitHub (Sep 2, 2023): I'm hoping that downloads in iOS (in my particular case) will be ironed out in later versions of the app.
Author
Owner

@anddam commented on GitHub (Sep 24, 2023):

Seeing same issue with server 2.3.4 and iOS 0.9.66-beta, new install on the iPhone.

@anddam commented on GitHub (Sep 24, 2023): Seeing same issue with server 2.3.4 and iOS 0.9.66-beta, new install on the iPhone.
Author
Owner

@advplyr commented on GitHub (Sep 24, 2023):

I'm not able to reproduce this using nginx proxy manager and cloudflare

@advplyr commented on GitHub (Sep 24, 2023): I'm not able to reproduce this using nginx proxy manager and cloudflare
Author
Owner

@anddam commented on GitHub (Sep 24, 2023):

I'm not able to reproduce this using nginx proxy manager and cloudflare

Oh I am not even talking about public networking, I have the audiobookshelf server in LAN, the clients, both Android and iOS, are connecting straight away via http. I do see the download progressing on iOS, as I do on Android, yet the playback fails as in the issue description.

As additional detail streaming correctly works on both platforms.

Although I was seeing the same error my issue was due to the file (correctly downloaded by the client) not being playable at all on iOS.

I fixed this by removing the video and subtitle streams in the M4B file using ffmpeg.

For anyone who needs to do the same, just tweak

ffmpeg -i input -map a -c copy output

to your need.
The audio codec copying will keep audio and bin_data streams while dropping the videl and mov_text that in my case were making the playback fail.

@anddam commented on GitHub (Sep 24, 2023): > I'm not able to reproduce this using nginx proxy manager and cloudflare ~~Oh I am not even talking about public networking, I have the audiobookshelf server in LAN, the clients, both Android and iOS, are connecting straight away via http. I do see the download progressing on iOS, as I do on Android, yet the playback fails as in the issue description.~~ ~~As additional detail streaming correctly works on both platforms.~~ Although I was seeing the same error my issue was due to the file (correctly downloaded by the client) not being playable at all on iOS. I fixed this by removing the video and subtitle streams in the M4B file using ffmpeg. For anyone who needs to do the same, just tweak ffmpeg -i input -map a -c copy output to your need. The audio codec copying will keep audio and bin_data streams while dropping the videl and mov_text that in my case were making the playback fail.
Author
Owner

@slowspike commented on GitHub (Sep 25, 2023):

I was able to fix my issue. With server 2.3.4 and iOS 0.9.66-beta, I wasn't even able to login anymore using a reverse proxy on the iOS app. On my Cloudflare dashboard, I saw under Security>Events that one of my custom WAF rules (block bad bots) was blocking the app from logging in. I whitelisted the ASN under IP Access Rules, and was able to login. Finally, when I tried to download an audiobook, it was successful and could be played.

My original problem was not being able to download, but I didn't check my Cloudflare settings at the time, so I'm not sure if a WAF rule was blocking just the downloads then.

@slowspike commented on GitHub (Sep 25, 2023): I was able to fix my issue. With server 2.3.4 and iOS 0.9.66-beta, I wasn't even able to login anymore using a reverse proxy on the iOS app. On my Cloudflare dashboard, I saw under Security>Events that one of my custom WAF rules (block bad bots) was blocking the app from logging in. I whitelisted the ASN under IP Access Rules, and was able to login. Finally, when I tried to download an audiobook, it was successful and could be played. My original problem was not being able to download, but I didn't check my Cloudflare settings at the time, so I'm not sure if a WAF rule was blocking just the downloads then.
Author
Owner

@advplyr commented on GitHub (Sep 25, 2023):

Thanks for following up, I'm glad you got it figured out

@advplyr commented on GitHub (Sep 25, 2023): Thanks for following up, I'm glad you got it figured out
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#679