Jellyfin Forum
Stuck at blue spinning wheel between episodes - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Stuck at blue spinning wheel between episodes (/t-stuck-at-blue-spinning-wheel-between-episodes)



Stuck at blue spinning wheel between episodes - draz1c - 2024-01-24

Hi,

I have an issue with my recently set up Jellyfin installation. It runs on a Raspberry Pi 4 on Docker and I play videos on a Windows 10 laptop each night to go to sleep. First episode loads fine (almost instantly) but when episode ends and jumps to next episode most of the times it gets stuck on a blue spinning circle and next episode never gets to play.

I'm not completely sure but this might have something to do with login with the same account on two different devices as the first time this happened to me I was playing a video on the laptop and I opened the phone's Jellyfin app to check the status (transcoding or direct play; it was the latter) and when the episode ended, the next didn't play and the blue spinning circle appeared and the only way to solve this is to close the application and open it again, it won't play anything unless you close and open it. Then it started to happen on a regular basis since I set up Jellyplex-Watched on docker as well, that uses tokens to authenticate on both Plex and Jellyfin and sync what episodes or films you have watched on each platform. By default it runs every hour, so if, let's say, it runs at 10:40, 11:40, 12:40, etc... if I'm watching an episode and in the middle of it one of these executions happens, then next episode won't play.

This is my little own troubleshooting but I will post logs if needed.

Could this actually be a thing or it is something else completely different and I'm just tunnel visioning to the same user connected at the same time doing things that breaks up the playback?

Thank you.

How about this part of the logs, could this be related to my error?

Code:
[2024-01-23 23:48:49.162 +01:00] [INF] [42] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets.
[2024-01-23 23:49:01.165 +01:00] [INF] [22] Emby.Server.Implementations.Session.SessionWebSocketListener: Lost 1 WebSockets.
[2024-01-23 23:53:09.102 +01:00] [WRN] [67] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "192.168.1.100" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
[2024-01-23 23:53:09.127 +01:00] [INF] [67] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.1.100" closed



RE: Stuck at blue spinning wheel between episodes - TheDreadPirate - 2024-01-24

Can you share your full log on sourcebin? For troubleshooting disable that JellyPlex-Watched container? Seems you already suspect that, but just to confirm that it is the culprit.


RE: Stuck at blue spinning wheel between episodes - draz1c - 2024-01-25

(2024-01-24, 08:12 PM)TheDreadPirate Wrote: Can you share your full log on sourcebin?  For troubleshooting disable that JellyPlex-Watched container?  Seems you already suspect that, but just to confirm that it is the culprit.

Sure, here you go: https://srcb.in/CCMThm7YIQ


RE: Stuck at blue spinning wheel between episodes - TheDreadPirate - 2024-01-25

There is nothing OBVIOUSLY wrong, but I see this a bunch.

Code:
[2024-01-23 23:01:29.786 +01:00] [INF] [23] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My Big Move". Stopped at "1297763" ms
[2024-01-23 23:01:29.872 +01:00] [INF] [68] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My Big Move". Stopped at "0" ms

It reports the correct stop point then.....says start at the beginning?

Can you turn on debug logging? Replicate the problem then share the new log.

https://jellyfin.org/docs/general/administration/troubleshooting/#debug-logging


RE: Stuck at blue spinning wheel between episodes - draz1c - 2024-01-26

(2024-01-25, 05:36 PM)TheDreadPirate Wrote: There is nothing OBVIOUSLY wrong, but I see this a bunch.

Code:
[2024-01-23 23:01:29.786 +01:00] [INF] [23] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My Big Move". Stopped at "1297763" ms
[2024-01-23 23:01:29.872 +01:00] [INF] [68] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My Big Move". Stopped at "0" ms

It reports the correct stop point then.....says start at the beginning?

Can you turn on debug logging?  Replicate the problem then share the new log.

https://jellyfin.org/docs/general/administration/troubleshooting/#debug-logging

With the debug activated the logs go crazy (16k lines in 1.5k hours) and most of those lines (13k) is this repeated a few times every second which I have deleted from the logs:

Code:
Jellyfin.Api.Auth.CustomAuthenticationHandler: AuthenticationScheme: "CustomAuthentication" was successfully authenticated.


I get stuck between episodes at about 23:13 or something and the previous execution of JellyPlex-Watched I think happened like 5 minutes before ( Tonight I forgot to disable JellyPlex-Watched but I will for tonight).

I have attached the logs because sourcebin didn't allow me to upload as many lines of log.

BTW: I missclicked on "mark as solved" when trying to reply you, could you undo that please?

edit: nope, apparently I cannot attach a file
edit2: https://mega.nz/file/3dIxHRRB#flzwa4OYK3qDKsAjERwFOa0EBHSN_EPxDk1SYYLB4o8


RE: Stuck at blue spinning wheel between episodes - TheDreadPirate - 2024-01-27

Code:
[2024-01-25 23:38:12.677 +01:00] [INF] [35] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My New God". Stopped at "1304937" ms
[2024-01-25 23:38:12.789 +01:00] [DBG] [23] Jellyfin.Api.Controllers.PlaystateController: ReportPlaybackStopped PlaySessionId: ""
[2024-01-25 23:38:12.813 +01:00] [DBG] [8] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "Jellyfin Media Player", Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: null, MaxAlbumArtHeight: null, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 1000000000, MusicStreamingTranscodingBitrate: 1280000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 5, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Photo }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "", Type: Audio, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg4,mpeg2video", AudioCodec: "aac,mp3,ac3,opus,vorbis", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "jpeg", Type: Photo, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: VideoRangeType, Value: "DOVI", IsRequired: True }], ApplyConditions: [], Codec: null, Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvdsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvbsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }] }
[2024-01-25 23:38:12.836 +01:00] [INF] [23] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My New God". Stopped at "0" ms

Its almost like after you stop playback it starts another trying to play again. "GetPostedPlaybackInfo" is usually the first thing a client sends to the server to determine if it needs to transcode or not. But it pops up after you stop playback. Immediately after this is when the playback timer is set back to the start.

Report back if disabling that plugin helped.


RE: Stuck at blue spinning wheel between episodes - draz1c - 2024-01-27

(2024-01-27, 03:01 AM)TheDreadPirate Wrote:
Code:
[2024-01-25 23:38:12.677 +01:00] [INF] [35] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My New God". Stopped at "1304937" ms
[2024-01-25 23:38:12.789 +01:00] [DBG] [23] Jellyfin.Api.Controllers.PlaystateController: ReportPlaybackStopped PlaySessionId: ""
[2024-01-25 23:38:12.813 +01:00] [DBG] [8] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "Jellyfin Media Player", Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: null, MaxAlbumArtHeight: null, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 1000000000, MusicStreamingTranscodingBitrate: 1280000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 5, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Photo }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "", Type: Audio, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg4,mpeg2video", AudioCodec: "aac,mp3,ac3,opus,vorbis", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "jpeg", Type: Photo, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: VideoRangeType, Value: "DOVI", IsRequired: True }], ApplyConditions: [], Codec: null, Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvdsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvbsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }] }
[2024-01-25 23:38:12.836 +01:00] [INF] [23] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "My New God". Stopped at "0" ms

Its almost like after you stop playback it starts another trying to play again.  "GetPostedPlaybackInfo" is usually the first thing a client sends to the server to determine if it needs to transcode or not.  But it pops up after you stop playback.  Immediately after this is when the playback timer is set back to the start.

Report back if disabling that plugin helped.

Tonight I had it disabled and didn't experience any issue. Playback between episodes went smooth as one would expect but even though everything played fine I still have those logs with playback timer set to the start:

Code:
[2024-01-27 00:14:13.878 +01:00] [INF] [33] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "Her Story II". Stopped at "1302835" ms
[2024-01-27 00:14:14.010 +01:00] [DBG] [27] Jellyfin.Api.Controllers.PlaystateController: ReportPlaybackStopped PlaySessionId: ""
[2024-01-27 00:14:14.032 +01:00] [DBG] [11] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "Jellyfin Media Player", Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: null, MaxAlbumArtHeight: null, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 1000000000, MusicStreamingTranscodingBitrate: 1280000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 5, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Photo }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "", Type: Audio, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg4,mpeg2video", AudioCodec: "aac,mp3,ac3,opus,vorbis", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "jpeg", Type: Photo, VideoCodec: "", AudioCodec: "", Protocol: "", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: VideoRangeType, Value: "DOVI", IsRequired: True }], ApplyConditions: [], Codec: null, Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvdsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvbsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }] }
[2024-01-27 00:14:14.046 +01:00] [INF] [27] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Media Player" "1.9.1" playing "Her Story II". Stopped at "0" ms

I don't know what has changed and if the logs can shed some light about it, but at least for last night it seems that not having JellyPlex-Watched makes it work properly, I will continue to monitor if today's logs do not show anything relevant but I'd love to have JellyPlex-Watched running so that I could use both platforms.

Logs uploaded to mega: https://mega.nz/file/iFhy2ZyL#JsD4Vh7wH5RNQyKI-9iJjnH77Q6OoPcJXiajE8mxFis

P.S.: I have deleted thousands of lines that flood the logs like these two:
Code:
Jellyfin.Api.Auth.CustomAuthenticationHandler: AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
Jellyfin.Api.Auth.CustomAuthenticationHandler: AuthenticationScheme: "CustomAuthentication" was not authenticated.



RE: Stuck at blue spinning wheel between episodes - TheDreadPirate - 2024-01-27

Does Plex have the ability to sync watch status with trakt? Maybe having Jellyfin looking at trakt separately will achieve the same functionality.


RE: Stuck at blue spinning wheel between episodes - draz1c - 2024-02-28

@TheDreadPirate I might have found what the problem was: I run Jellyfin server under Docker on a Raspberry Pi 4 model B, and these problems always happen when the cpu was under heavy load. For example, when under heavy load Traefik wouldn't respond to my requests so trying to access my locally created DNS record of "jellyfin.raspberry.pi" wouldn't load while manually browsing to IP:Port of Jellyfin would load.

I had a backup job set at 12am each night that even though it would only last for just a few minutes it was enough to make the Raspberry Pi unusable for 30 minutes or 1 hour, so I moved the backup job at 4am. I also stopped Plex and JellyPlex (that would put the cpu under heavy heavy load). Since I did those fixes I think I haven't had any problem, so that must be it.

It was odd that it wasn't reported in the logs though.