Originally created by @slowspike on GitHub (Aug 29, 2023).
Steps to reproduce
Download any audiobook (.mp3 or .m4b)
Try to play local files
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.
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
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.
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.
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.
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?
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.~~
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.~~
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?
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.
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.
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.
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.
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 @slowspike on GitHub (Aug 29, 2023).
Steps to reproduce
.mp3or.m4b)Expected behaviour
File should download and be playable.
Actual behaviour
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
iOS Issue
iOS Version: 16.6
iPhone model: iPhone 13 Pro
@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.
@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.
@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
@slowspike commented on GitHub (Aug 29, 2023):
I've tried both
.m4band.mp3on ios. I just tested downloading using the web UI and that works as well.@advplyr commented on GitHub (Aug 29, 2023):
Are you using a reverse proxy or downloading from local ip?
@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?
@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.@slowspike commented on GitHub (Sep 2, 2023):
I do use Cloudflare, but I am able to download the same files using the android app.
@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.@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?
@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.
@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.
@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.
@advplyr commented on GitHub (Sep 24, 2023):
I'm not able to reproduce this using nginx proxy manager and cloudflare
@anddam commented on GitHub (Sep 24, 2023):
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
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.
@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.
@advplyr commented on GitHub (Sep 25, 2023):
Thanks for following up, I'm glad you got it figured out