leinelissen / jellyfin-audio-player

🎵 A gorgeous Jellyfin audio streaming app for iOS and Android
https://fintunes.app
MIT License
752 stars 27 forks source link

Playback reporting seems not working in iOS with latest Jellyfin server version #218

Closed magandrez closed 3 months ago

magandrez commented 4 months ago

I run the latest version of Fintunes on top of iOS 17.4.1, my Jellyfin server runs v10.9.1 I have noticed that with this specific client, Jellyfin does not scrobble to Last.fm the songs I stream on the phone. I have played a whole song and the "User Activity" view in Jellyfin does not seem to register the played song.

A detail that might or might not be relevant, I stream my music over VPN (and do so successfully, including playback reporting with other clients).

This issue has been requested by the maintainer in #214

magandrez commented 4 months ago

To note: Jellyfin does register the device correctly (can be seen as active device when the song is played)

magandrez commented 4 months ago

Below, logs from the server after playing 1 song:

[2024-05-16 19:43:00.508 +03:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile
{ Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "alac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec:
"alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type:
Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aiff", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aif", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], SubtitleProfiles: [] }
[2024-05-16 19:43:00.513 +03:00] [INF] User policy for "foobar". EnableAudioPlaybackTranscoding: True
[2024-05-16 19:43:00.586 +03:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile
{ Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "alac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec:
"alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type:
Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aiff", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aif", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], SubtitleProfiles: [] }
[2024-05-16 19:43:00.591 +03:00] [INF] User policy for "foobar". EnableAudioPlaybackTranscoding: True
[2024-05-16 19:43:00.843 +03:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile
{ Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "alac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec:
"alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type:
Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aiff", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aif", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], SubtitleProfiles: [] }
[2024-05-16 19:43:00.852 +03:00] [INF] User policy for "foobar". EnableAudioPlaybackTranscoding: True
[2024-05-16 19:43:07.911 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:43:37.915 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:44:07.919 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:44:37.919 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:45:07.920 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:45:37.919 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:46:07.921 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:46:37.923 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:47:07.923 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:47:37.923 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:48:07.924 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 19:48:37.926 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
magandrez commented 4 months ago

Oh, an update on the above, several minutes AFTER playing the song, the server logs registered the following:

[2024-05-16 20:03:07.968 +03:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
[2024-05-16 20:03:09.573 +03:00] [INF] Playback stopped reported by app "Jellyfin Web" "10.9.1" playing "Uchu Tanjyo". Stopped at "13819" ms
[2024-05-16 20:03:10.132 +03:00] [INF] Playback stop did not have a tracker : "TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxN180XzEgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4fDE3MTU4NzY4NDE0MTA1-49959c857cb34f379f0945549d9200eb-4310c8a49d6888f71965d1b26aa5abd4"
leinelissen commented 3 months ago

Hey thanks for checking it out. Turns out there is an issue with how I was previously sending playback updates. It's now been fixed and should be available in the next Fintunes release.

leinelissen commented 3 months ago

Hey, I've released a beta on TestFlight. Would you be in a position to download it and check whether it fixes the issue? You can find the beta here: https://testflight.apple.com/join/TpHWMmfM

magandrez commented 3 months ago

Hey, I've released a beta on TestFlight. Would you be in a position to download it and check whether it fixes the issue? You can find the beta here: https://testflight.apple.com/join/TpHWMmfM

TestFlight requests a code to redeem and start testing the app. Could you provide one?

leinelissen commented 3 months ago

Hmm, it should be public and open for everyone. What kind of code is it requesting? Can you share a screenshot?

magandrez commented 3 months ago

Ok, so it turned out to be a TestFlight glitch of some sort. I had to close it couple times, as my phone was overheating.

I was now able to test this and I cannot reproduce the original problem.

See screenshots attached from a song being correctly scrobled (thus, notified back to the server and scrobled from there, as per my setup)

Thanks!!!

image

image

leinelissen commented 3 months ago

Perfect, thanks for checking!