jellyfin / jellyfin-android

Android Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
1.45k stars 241 forks source link

External player sends wrong stopped timestamps #565

Closed sellibitze closed 2 years ago

sellibitze commented 2 years ago

Please describe your bug

Steps to reproduce:

I'm not sure which side is to blame here. The server side or the client side. So, I'm opening the issue here.

According to the attached jellyfin logs, the wrong time stamps also appear as reported by the client:

[2021-11-16 11:50:05.531 +01:00] [INF] Playback stopped reported by app "Jellyfin Android" "2.4.0" playing "Episode 1". Stopped at "300342" ms
...
[2021-11-16 11:50:23.471 +01:00] [INF] Playback stopped reported by app "Jellyfin Android" "2.4.0" playing "Episode 1". Stopped at "660951" ms

The second time stamp should be around 360000 ms (6:00). So, if that is really what the client was reporting, the client is at fault, I guess. But it might also be a value (wrongly) adjusted by the server -- maybe because the server thinks the client's "epoch" (0:00) starts at 5:00 (last resume point).

Jellyfin Version

10.7.7

if other:

No response

Environment

- OS: Debian Linux
- Virtualization: No
- Clients: Android client with MPV as external player

Jellyfin logs

[2021-11-16 11:49:39.505 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External Player Stub", 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 100000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 320000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] }
[2021-11-16 11:49:39.509 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:49:39.510 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:49:39.510 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:49:39.510 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:49:39.511 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:49:39.512 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:49:39.512 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:49:39.513 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:49:39.513 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:49:39.514 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:49:39.594 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External 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: 2147483647, MaxAlbumArtHeight: 2147483647, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-11-16 11:49:39.602 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:49:39.602 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:49:39.603 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:49:39.603 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:49:40.100 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:49:40.126 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:49:40.127 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0258807"
[2021-11-16 11:49:46.570 +01:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets.
[2021-11-16 11:49:58.574 +01:00] [INF] Lost 1 WebSockets.
[2021-11-16 11:50:05.531 +01:00] [INF] Playback stopped reported by app "Jellyfin Android" "2.4.0" playing "Episode 1". Stopped at "300342" ms
[2021-11-16 11:50:06.050 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:50:06.073 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:50:06.073 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0229354"
[2021-11-16 11:50:09.027 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External Player Stub", 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 100000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 320000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] }
[2021-11-16 11:50:09.028 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:09.028 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:09.070 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External 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: 2147483647, MaxAlbumArtHeight: 2147483647, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-11-16 11:50:09.072 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:50:09.072 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:09.072 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:09.072 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:09.612 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:50:09.652 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:50:09.652 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0396976"
[2021-11-16 11:50:23.471 +01:00] [INF] Playback stopped reported by app "Jellyfin Android" "2.4.0" playing "Episode 1". Stopped at "660951" ms
[2021-11-16 11:50:23.988 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:50:24.010 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:50:24.011 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0227514"
[2021-11-16 11:50:26.099 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External Player Stub", 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 100000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 320000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [] }
[2021-11-16 11:50:26.100 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:50:26.101 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:26.101 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:26.101 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:26.101 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:26.101 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:26.101 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:26.104 +01:00] [INF] Not eligible for DirectPlay due to unsupported subtitles
[2021-11-16 11:50:26.104 +01:00] [INF] Not eligible for DirectStream due to unsupported subtitles
[2021-11-16 11:50:26.104 +01:00] [INF] Profile: "Android External Player Stub", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2021-11-16 11:50:26.144 +01:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: "Android External 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: 2147483647, MaxAlbumArtHeight: 2147483647, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Video }, DirectPlayProfile { Container: null, AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [], ContainerProfiles: [], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smil", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-11-16 11:50:26.145 +01:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 11:50:26.145 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:26.145 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:26.146 +01:00] [INF] Profile: "Android External Player", Path: "/mnt/merged_share/some_video.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 11:50:26.681 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:50:26.705 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:50:26.705 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0237393"
[2021-11-16 11:50:31.545 +01:00] [INF] Playback stopped reported by app "Jellyfin Android" "2.4.0" playing "Episode 1". Stopped at "1323487" ms
[2021-11-16 11:50:32.060 +01:00] [INF] Starting User Changes Sync...
[2021-11-16 11:50:32.085 +01:00] [INF] "USERSYNC" User "2900a229289d453c900e256b6d66931e"("jellyfin") posted 2 Updates: "925739bb5214edc376272c346368253f,943468baaaa2d0f84e5f8ca3786cf0ef"
[2021-11-16 11:50:32.085 +01:00] [INF] User Changes Sync Finished Taking "00:00:00.0246603"

FFmpeg logs

No response

Please attach any browser or client logs here

No response

Please attach any screenshots here

No response

Code of Conduct

Maxr1998 commented 2 years ago

Found the culprit in Jellyfin Web. Since the web client thinks we're transcoding, it adds the transcoding offset to the current time, which is wrong, as External player direct plays. Fixing the External player profiles should fix this bug.

Maxr1998 commented 2 years ago

Still seems to be an issue, according to #602. Needs more investigation.

mingyech commented 2 years ago

I'm able to reproduce the issue in the new version but only when there are subtitles for the video. The player profile lacks the supported subtitle formats so the server still thinks the video needs to be transcoded. Seems like adding them fixes the issue.