Undefined Behavior in Expanded Now Playing Screen

Issue description:

Hi,

I have recently been a bit confused with Symfonium’s behavior on the “Now Playing” screen. There are a few points which I would like to address:

  1. The album art loads normally during the app’s usage. However, when I play the track, the album art goes missing in the expanded play screen. Sometimes, after locking my phone and unlocking it again, it will show up normally.
  2. Sometimes the expanded play screen control buttons go missing (image attached).
  3. When the buttons are there, the audio file cannot be scrolled (drag button for scrolling is greyed out).

The audio stream I’m sending is transcoded with this command: ffmpeg -i %input -map 0:0 -v 0 -f opus -b:a %bitratek -.

Logs:

Upload description: Bonkers

Contextual information:

Server: Subsonic (GitHub - kagemomiji/airsonic-advanced: airsonic-advanced fork)
Device: Pixel 8 Pro

Sometimes this happens (I can’t find a reason, I tried to change the ffmpeg transcoding command, tried MP3 instead of OPUS):

 

    

Before the track loads:

After the track loads:

The fact that you can’t seek when transcoding is normal, your server does not support the necessary OpenSubsonic extension.

You can point the author to Transcode Offset | OpenSubsonic

For the rest the buttons are not missing, they are white on white so just not visible.

Unfortunately the logs does not show why the image is reset and so break the colors. While I can probably secure the colors generation, it would be nice if you could try to enable the persistent image cache in the settings (and force restart the app) to see if it helps.

1 Like

The fact that you can’t seek when transcoding is normal, your server does not support the necessary OpenSubsonic extension.

Okay, thank you for this, very helpful!

For the rest the buttons are not missing, they are white on white so just not visible.

Yup very true, I missed this at first glance. I tried and the buttons are indeed still there. Thanks!

While I can probably secure the colors generation, it would be nice if you could try to enable the persistent image cache in the settings

It should be enabled ATM. It is quite strange because the images load fine everywhere else, it’s just on this screen that they are broken. Is there anything else I can do to help you track down the issue?

Does it happens 100% of the time? Can your phone storage be full?

Can your phone storage be full?

I have 72GB free ATM, using only 44% of my storage.

Does it happens 100% of the time?

Yes, images seem to always be broken. I have different types of media on my server, some with embedded cover art, and some with a cover.jpg in their folder. They seem to be broken in both cases. However I also notice this other strange thing that may be helpful in debugging the issue:

While it’s loading, everything looks generally OK:

When the loading is finished, the “Artist” text SOMETIMES changes to something weird that looks like passed parameters. Not sure whether this is helpful to debug the image issue but I thought to mention it anyway. And yes, I am sure that the tags on the file are correct - you can see on the image before that they are originally picked up okay.

Yes that helped a lot:

    IcyHeaders: name="Airsonic", genre="Mixed", bitrate=-1, metadataInterval=20480
  ICY: title="Cowards Way", url="null", rawMetadata.length="26"

Your server sends ICY data when playing the media …
So Symfonium uses that as if it was an Internet radio, because ICY data is supposed to have the proper data.

You need to see with the server why it does that and how to disable it.

To be fair I did see this in the logs and I was wondering what it was since I’ve never seen ICY before… but guess I’m learning a new thing today :joy:

Thanks for your quick and awesome support as always, it is a great help!

@Tolriq Sorry for the bother again, but I am implementing this feature myself and have been unable to “activate” the scrolling on Symfonium side.

What is the logic for the trigger? I read the docs and assumed when the getOpenSubsonicExtensions API is called and returns the extension, Symfonium should allow media scrolling again:

curl "https://my.subsonic.dns/rest/getOpenSubsonicExtensions.view?f=json&u=user&p=pass&v=1.13.0&c=Symfonium"

Response from server:

{"subsonic-response":{"status":"ok","version":"1.15.0","type":"Airsonic-Advanced","serverVersion":"0.1.3","openSubsonic":true,"openSubsonicExtensions":[{"name":"transcodeOffset","versions":[1]}]}}

The support for the timeOffset in the server’s controller is already there:

@RequestMapping({"/stream", "/stream.view"})
    public ResponseEntity<Resource> stream(Authentication authentication,
            @RequestParam(required = false, name = "playlist") Integer playlist,
            @RequestParam(required = false, name = "format") String format,
            @RequestParam(required = false, name = "suffix") String suffix,
            @RequestParam("maxBitRate") Optional<Integer> maxBitRate,
            @RequestParam("id") Optional<Integer> id,
            @RequestParam("path") Optional<String> path,
-->         @RequestParam(required = false, name = "timeOffset") Double timeOffset,
            ServletWebRequest swr) throws Exception {

Am I supposed to do something else?

Check Symfonium logs and be sure the OpenSubsonic: true is present in all queries.

1 Like