advplyr / audiobookshelf

Self-hosted audiobook and podcast server
https://audiobookshelf.org
GNU General Public License v3.0
6.26k stars 437 forks source link

[Bug]: No cast support for pwa app? #1716

Open Sylvio82 opened 1 year ago

Sylvio82 commented 1 year ago

Describe the issue

When using the android app I can cast audio to my google nest. But when using the pwa app this does not work. I can select the device, but only got a spinning wheel trying to connect.

I am running audiobookshelf server on my synology nas with docker.

Steps to reproduce the issue

  1. Login to your audiobookshelf server. Try to cast to a google device

Audiobookshelf version

2.2.19

How are you running audiobookshelf?

Docker

darth3pio commented 1 year ago

Uh, I'm trying to work out this myself, it sometimes works and sometimes doesn't trying to work out a pattern.

At this moment I'm leaning towards file type. *Edit: Nope

Seems to get stuck in the PlaybackSessionManager with syncSession.

Maybe the length of the audiobook or number of chapters if split by files, perhaps it's having issues generating the playlist? I'm not sure where the cut off mark is but the books in my library that endlessly buffer but don't cast (that I've tested so far) are in the 50>= chapters range while all of the 20<= chapters cast just fine.

advplyr commented 1 year ago

There has been reports of M4B/M4A audiobooks not being able to cast to audio-only devices. Is this the problem here? Do MP3 audiobooks work for you? Are you casting to an audio-only device?

darth3pio commented 1 year ago

We've got a mix of flac, mp3 and m4b in our library, all audiobooks are split by chapter into separate files. I'm using a Nest Hub to test this, format doesn't seem to be the problem. The only thing I've found in common is number of chapters.

I'll see about downloading one of my audiobooks from Audible again and not splitting it this time, hopefully it will rule out number of playlist items being an issue.

darth3pio commented 1 year ago

Using OpenAudible to download "Sherlock Holmes: The Definitive Collection" to m4b - 141 chapters, 1.91GB

Single file: Casts just fine Split files: Endless buffer animation

2023-05-28 00:07:47 DEBUG [PlaybackSessionManager] startSessionRequest for device Windows 10 / Edge

2023-05-28 00:07:47 DEBUG [PlaybackSessionManager] "darth3pio" starting direct play session for item "li_i10k9isu1m5wbti5zp" with id play_rco2btqr8soybw54gj (Device: Windows 10 / Edge)

2023-05-28 00:07:59 DEBUG [PlaybackSessionManager] syncSession "play_rco2btqr8soybw54gj" (Device: Windows 10 / Edge) | Total Time Listened: 5

2023-05-28 00:07:59 DEBUG [DB] Updated user: 1

2023-05-28 00:07:59 DEBUG [DB] Inserted 1 session

2023-05-28 00:08:04 DEBUG [PlaybackSessionManager] syncSession "play_rco2btqr8soybw54gj" (Device: Windows 10 / Edge) | Total Time Listened: 10

2023-05-28 00:08:04 DEBUG [DB] Updated user: 1

2023-05-28 00:08:04 DEBUG [DB] Updated session: 1

2023-05-28 00:08:07 DEBUG [PlaybackSessionManager] syncSession "play_rco2btqr8soybw54gj" (Device: Windows 10 / Edge) | Total Time Listened: 13

2023-05-28 00:08:07 DEBUG [DB] Updated user: 1

2023-05-28 00:08:07 DEBUG [PlaybackSessionManager] closeSession "play_rco2btqr8soybw54gj"

2023-05-28 00:08:07 DEBUG [PlaybackSessionManager] Removed session "play_rco2btqr8soybw54gj"

2023-05-28 00:08:07 DEBUG [DB] Updated session: 1

I terminated the stream manually here in order to switch from the single file audiobook entry to the multiplefile audiobook entry.

2023-05-28 00:08:08 DEBUG [PlaybackSessionManager] startSessionRequest for device Windows 10 / Edge

2023-05-28 00:08:08 DEBUG [PlaybackSessionManager] "darth3pio" starting direct play session for item "li_ff55tanrcj9yt00094" with id play_b69s8rb8f3ec3si0jp (Device: Windows 10 / Edge)

The log continues beyond this with cron jobs being performed for podcast feed updates so I applaud the error handling 😛

It's getting held up somewhere inside syncSession given that we're not generating a log entry the second time around.

advplyr commented 1 year ago

We would have to check the logs from the cast device because it is the device that is not sending back the play events. Unless it actually is playing on the cast device but the UI is not updating?

I don't believe this would be an issue with syncing since a sync will only happen when the audio is playing. When you say you are splitting the m4b into 141 audio files are those audio files mp3?

darth3pio commented 1 year ago

OpenAudible will download as a single file and offers the ability to split by chapter so yeah, 141 files in the case of Sherlock Holmes, default is m4b but I'll try again downloading as mp3 instead.

I've not peeked at the code but I'm assuming we're generating a playlist that gets sent to the speaker.

Some podcasts also seem to fail the same way, eg "The History of Rome" by Mike Duncan, 192 episodes, these are in mp3 format.

Could it be possible to break up the playlist into smaller chunks and refresh the stream when it's nearing the end of the chunk?

darth3pio commented 1 year ago

Seems to become unreliable at about 26-ish files.

Sylvio82 commented 1 year ago

Hi. I cant get audiobookshelf to run in host mode. There is no error message, but the container always restarts until I stop it manually.

Am Mi., 24. Mai 2023 um 23:21 Uhr schrieb Duncan MacFarlane < @.***>:

Did you set up the container networking in host or bridge mode? Bridge won't have access to the local network as it is isolated as a separate vlan network inside Docker.

— Reply to this email directly, view it on GitHub https://github.com/advplyr/audiobookshelf/issues/1716#issuecomment-1561942612, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUGJUZ5SE3QPHUYC2UAVWCDXHZ3U7ANCNFSM6AAAAAAXJRQFYA . You are receiving this because you authored the thread.Message ID: @.***>

darth3pio commented 1 year ago

Don't worry about this part, this was part of my own troubleshooting steps. I'm also running on a Synology and port 80 is reserved so Host vs Bridge was a terrible suggestion.

Try see if anything further down in the conversation can be replicated.