jellyfin / jellyfin-expo

Jellyfin Mobile for iOS
https://jellyfin.org
Mozilla Public License 2.0
288 stars 65 forks source link

Jellyfin playback out of sync with Airplay #472

Open amk221 opened 6 months ago

amk221 commented 6 months ago

New user, coming from Plex.

When I Airplay media through Jellyfin, sometimes iOS has no knowledge that is is happneing. See video:

https://github.com/jellyfin/jellyfin/assets/382061/ad89eef2-ceb1-4a54-8230-7bd574e6bd94

Media Info of the file All media (video, music, audiobooks etc).

Logs

Error reporting playback progress

Logs [2024-01-01 19:49:49.949 +00:00] [INF] [45] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 19:49:50.028 +00:00] [INF] [85] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, 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: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], 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 }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] } [2024-01-01 19:49:50.031 +00:00] [INF] [85] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 19:50:16.021 +00:00] [WRN] [34] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "IPGOESHERE" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake." [2024-01-01 19:50:16.028 +00:00] [INF] [34] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" closed [2024-01-01 19:50:16.209 +00:00] [INF] [27] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Mobile (iOS)" "1.5.0" playing "001 - Abby in Wonderland". Stopped at "756569" ms [2024-01-01 19:50:16.266 +00:00] [INF] [34] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, 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: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], 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 }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] } [2024-01-01 19:50:16.268 +00:00] [INF] [34] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 19:50:16.284 +00:00] [INF] [96] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, 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: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], 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 }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] } [2024-01-01 19:50:16.285 +00:00] [INF] [96] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 20:02:29.547 +00:00] [INF] [52] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" request [2024-01-01 20:03:20.176 +00:00] [INF] [51] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets. [2024-01-01 20:03:32.187 +00:00] [INF] [49] Emby.Server.Implementations.Session.SessionWebSocketListener: Lost 1 WebSockets. [2024-01-01 20:03:54.879 +00:00] [INF] [33] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Mobile (iOS)" "1.5.0" playing "002 - Abby in Wonderland". Stopped at "0" ms [2024-01-01 20:03:54.879 +00:00] [INF] [51] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Mobile (iOS)" "1.5.0" playing "002 - Abby in Wonderland". Stopped at "817711" ms [2024-01-01 20:03:54.905 +00:00] [INF] [51] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, 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: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], 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 }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] } [2024-01-01 20:03:54.908 +00:00] [INF] [51] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 20:03:54.931 +00:00] [INF] [103] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, 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: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], 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 }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] } [2024-01-01 20:03:54.932 +00:00] [INF] [103] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "andrew". EnableAudioPlaybackTranscoding: True [2024-01-01 20:04:55.485 +00:00] [WRN] [112] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "IPGOESHERE" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake." [2024-01-01 20:04:55.491 +00:00] [INF] [112] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" closed [2024-01-01 20:05:00.736 +00:00] [INF] [118] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" request [2024-01-01 20:05:56.262 +00:00] [INF] [113] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets. [2024-01-01 20:06:08.273 +00:00] [INF] [113] Emby.Server.Implementations.Session.SessionWebSocketListener: Lost 1 WebSockets. [2024-01-01 20:10:41.376 +00:00] [WRN] [19] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "IPGOESHERE" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake." [2024-01-01 20:10:41.381 +00:00] [INF] [19] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" closed [2024-01-01 20:10:41.757 +00:00] [ERR] [19] Emby.Server.Implementations.Session.SessionManager: Error reporting playback progress MediaBrowser.Common.Extensions.ResourceNotFoundException: Session b1dbc42b61e1b8ae3a725d6f6966e833 not found. at Emby.Server.Implementations.Session.SessionManager.GetSession(String sessionId, Boolean throwOnMissing) at Emby.Server.Implementations.Session.SessionManager.OnPlaybackProgress(PlaybackProgressInfo info, Boolean isAutomated) at MediaBrowser.Controller.Session.SessionInfo.OnProgressTimerCallback(Object state) [2024-01-01 20:10:42.761 +00:00] [ERR] [19] Emby.Server.Implementations.Session.SessionManager: Error reporting playback progress MediaBrowser.Common.Extensions.ResourceNotFoundException: Session b1dbc42b61e1b8ae3a725d6f6966e833 not found. at Emby.Server.Implementations.Session.SessionManager.GetSession(String sessionId, Boolean throwOnMissing) at Emby.Server.Implementations.Session.SessionManager.OnPlaybackProgress(PlaybackProgressInfo info, Boolean isAutomated) at MediaBrowser.Controller.Session.SessionInfo.OnProgressTimerCallback(Object state) [2024-01-01 20:10:43.756 +00:00] [ERR] [19] Emby.Server.Implementations.Session.SessionManager: Error reporting playback progress MediaBrowser.Common.Extensions.ResourceNotFoundException: Session b1dbc42b61e1b8ae3a725d6f6966e833 not found. at Emby.Server.Implementations.Session.SessionManager.GetSession(String sessionId, Boolean throwOnMissing) at Emby.Server.Implementations.Session.SessionManager.OnPlaybackProgress(PlaybackProgressInfo info, Boolean isAutomated) at MediaBrowser.Controller.Session.SessionInfo.OnProgressTimerCallback(Object state) [2024-01-01 20:14:34.364 +00:00] [INF] [54] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "IPGOESHERE" request [2024-01-01 20:15:20.594 +00:00] [INF] [127] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets. [2024-01-01 20:15:32.600 +00:00] [INF] [127] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets. [2024-01-01 20:15:44.607 +00:00] [INF] [59] Emby.Server.Implementations.Session.SessionWebSocketListener: Lost 1 WebSockets. [2024-01-01 20:24:52.562 +00:00] [INF] [98] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Mobile (iOS)" "1.5.0" playing "003 - Abby in Wonderland". Stopped at "976561" ms [2024-01-01 20:24:52.567 +00:00] [INF] [70] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Mobile (iOS)" "1.5.0" playing "003 - Abby in Wonderland". Stopped at "0" ms

FFmpeg Logs

Stats for Nerds Screenshots

Server System (please complete the following information):

Client System (please complete the following information):

felix920506 commented 6 months ago

Are you trying to cast to another device using Airplay?

amk221 commented 6 months ago

I'm not casting, I'm Airplaying from an iPhone 14 Pro to a Sonos Roam SL