Playback not working on iOS device when connecting remotely through proxy #2050

Closed
opened 2026-02-06 21:41:35 +03:00 by OVERLORD · 13 comments
Owner

Originally created by @bartvdbraak on GitHub (Aug 17, 2020).

When accessing Jellyfin on iOS through my remote domain, behind a proxy (https://sub.example.com/web) where Let's Encrypt is used to encrypt the connection, some media will end in Playback Error. Some videos that play directly do work. Ffmpeg doesn't start transcoding. However, accessing my jellyfin locally without https (through http://192.168.1.6:8096) lets me watch transcoded video streams on iOS (browser/app).

Media Info of the file

Video - 2002 - Bluray-720p
Container: mkv
Path: /media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv
Size: 7512 MB

Video
Title: 720p H264
Codec: H264
AVC: No
Profile: High
Level: 41
Resolution: 1280x542
Aspect ratio: 2.35:1
Interlaced: No
Framerate: 23.976025
Bitrate: 9507 kbps
Bit depth: 8 bit
Pixel format: yuv420p
Ref frames: 1
NAL: 0

Audio
Title: Eng DTS 5.1 Default
Language: eng
Codec: DTS
Profile: DTS
Layout: 5.1
Channels: 6 ch
Bitrate: 1536 kbps
Sample rate: 48000 Hz
Default: Yes

Subtitle
Title: English
Language: eng
Codec: SUBRIP
Default: No
Forced: No
External: No

Logs

[2020-08-17 15:31:54.402 +00:00] [INF] [80] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.6" request
[2020-08-17 15:31:54.988 +00:00] [WRN] [79] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "195.240.155.157". Time (slow): 0:00:00.6600028. "http://watch.user.pro/Sessions/Capabilities/Full"
[2020-08-17 15:32:12.725 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }] }
[2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv"
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv"
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv"
[2020-08-17 15:32:16.275 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Starting User Changes Sync...
[2020-08-17 15:32:16.295 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: "USERSYNC" User "b02bad39399d4b148d5ccc64cbc23f79"("user") posted 2 Updates: "6cc50bab0fa741d0c4e62cbb19a0d297,ba9c5cad4ccd875366bf54fd50e04928"
[2020-08-17 15:32:16.296 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Changes Sync Finished Taking "00:00:00.0198576"
[2020-08-17 15:32:20.445 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] }
[2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-08-17 15:32:20.469 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv"
[2020-08-17 15:32:22.841 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] }
[2020-08-17 15:32:22.861 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv"
[2020-08-17 15:32:24.394 +00:00] [INF] [108] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Web" "10.6.0" playing "Video". Stopped at "0" ms

FFmpeg Logs

  • No ffmpeg-transcode log created

Server System (please complete the following information):

  • OS: Docker (portainer) on OpenMediaVault (Debian)
  • Jellyfin Version: 10.6.0
  • Hardware settings & device: No hardware acceleration, 12 QEMU threads, 12gb RAM
  • Reverse proxy: Nginx (Docker Nginx Proxy Manager with Let's Encrypt), nginx.conf:
# ------------------------------------------------------------
# sub.example.com# ------------------------------------------------------------


server {
  set $forward_scheme http;
  set $server         "192.168.1.6";
  set $port           8096;

  listen 8080;
listen [::]:8080;

listen 4443 ssl http2;
listen [::]:4443;

  server_name sub.example.com;

  # Let's Encrypt SSL
  include conf.d/include/letsencrypt-acme-challenge.conf;
  include conf.d/include/ssl-ciphers.conf;
  ssl_certificate /etc/letsencrypt/live/npm-1/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/npm-1/privkey.pem;

  # HSTS (ngx_http_headers_module is required) (31536000 seconds = 1 year)
  add_header Strict-Transport-Security "max-age=31536000; preload" always;
  access_log /config/log/proxy_host-1.log proxy
  location / {
    # Force SSL
    include conf.d/include/force-ssl.conf;
  # HSTS (ngx_http_headers_module is required) (31536000 seconds = 1 year)
  add_header Strict-Transport-Security "max-age=31536000; preload" always;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_http_version 1.1;
    
    # Proxy!
    include conf.d/include/proxy.conf;
  }
  # Custom
  include /data/nginx/custom/server_proxy[.]conf;
}
  • Other hardware notes: Media mounted with Docker volume bindings (local)
  • Installed Plugins: AudioDB, Kodi Sync Queue, MusicBrainz, OMDb, Open Subtitles, TheTVDB

Client System (please complete the following information):

  • Device: Apple iPhone 6s
  • OS: iOS 13.6
  • Client: iOS Safari, iOS Firefox, iOS Jellyfin App
  • Browser (if Web client): iOS Safari (Firefox uses the same engine)
  • Client and Browser Version: 13.1

Screenshots
IMG_0606

Extra
Media info for video where playback fails:
Screenshot 2020-08-17 at 17 53 50

Media info for video where playback does work:
Screenshot 2020-08-17 at 17 53 30

Originally created by @bartvdbraak on GitHub (Aug 17, 2020). When accessing Jellyfin on iOS through my remote domain, behind a proxy (`https://sub.example.com/web`) where Let's Encrypt is used to encrypt the connection, some media will end in `Playback Error`. Some videos that play directly do work. Ffmpeg doesn't start transcoding. However, accessing my jellyfin locally without `https` (through http://192.168.1.6:8096) lets me watch transcoded video streams on iOS (browser/app). **Media Info of the file** ``` Video - 2002 - Bluray-720p Container: mkv Path: /media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv Size: 7512 MB Video Title: 720p H264 Codec: H264 AVC: No Profile: High Level: 41 Resolution: 1280x542 Aspect ratio: 2.35:1 Interlaced: No Framerate: 23.976025 Bitrate: 9507 kbps Bit depth: 8 bit Pixel format: yuv420p Ref frames: 1 NAL: 0 Audio Title: Eng DTS 5.1 Default Language: eng Codec: DTS Profile: DTS Layout: 5.1 Channels: 6 ch Bitrate: 1536 kbps Sample rate: 48000 Hz Default: Yes Subtitle Title: English Language: eng Codec: SUBRIP Default: No Forced: No External: No ``` **Logs** - Output from iOS Safari Console Log when trying to play video: https://gist.github.com/bartvdbraak/922b053ec2aa783f27030d7a3e02b860 - Jellyfin log: ``` [2020-08-17 15:31:54.402 +00:00] [INF] [80] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.6" request [2020-08-17 15:31:54.988 +00:00] [WRN] [79] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "195.240.155.157". Time (slow): 0:00:00.6600028. "http://watch.user.pro/Sessions/Capabilities/Full" [2020-08-17 15:32:12.725 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }] } [2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-08-17 15:32:12.748 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv" [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv" [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-08-17 15:32:12.749 +00:00] [INF] [21] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv" [2020-08-17 15:32:16.275 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Starting User Changes Sync... [2020-08-17 15:32:16.295 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: "USERSYNC" User "b02bad39399d4b148d5ccc64cbc23f79"("user") posted 2 Updates: "6cc50bab0fa741d0c4e62cbb19a0d297,ba9c5cad4ccd875366bf54fd50e04928" [2020-08-17 15:32:16.296 +00:00] [INF] [63] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Changes Sync Finished Taking "00:00:00.0198576" [2020-08-17 15:32:20.445 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] } [2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-08-17 15:32:20.468 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-08-17 15:32:20.469 +00:00] [INF] [119] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv" [2020-08-17 15:32:22.841 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] } [2020-08-17 15:32:22.861 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-08-17 15:32:22.862 +00:00] [INF] [108] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Video (2002)/Video - 2002 - Bluray-720p.mkv" [2020-08-17 15:32:24.394 +00:00] [INF] [108] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Web" "10.6.0" playing "Video". Stopped at "0" ms ``` **FFmpeg Logs** - No `ffmpeg-transcode` log created **Server System (please complete the following information):** - OS: Docker (portainer) on OpenMediaVault (Debian) - Jellyfin Version: 10.6.0 - Hardware settings & device: No hardware acceleration, 12 QEMU threads, 12gb RAM - Reverse proxy: Nginx (Docker Nginx Proxy Manager with Let's Encrypt), `nginx.conf`: ``` # ------------------------------------------------------------ # sub.example.com# ------------------------------------------------------------ server { set $forward_scheme http; set $server "192.168.1.6"; set $port 8096; listen 8080; listen [::]:8080; listen 4443 ssl http2; listen [::]:4443; server_name sub.example.com; # Let's Encrypt SSL include conf.d/include/letsencrypt-acme-challenge.conf; include conf.d/include/ssl-ciphers.conf; ssl_certificate /etc/letsencrypt/live/npm-1/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/npm-1/privkey.pem; # HSTS (ngx_http_headers_module is required) (31536000 seconds = 1 year) add_header Strict-Transport-Security "max-age=31536000; preload" always; access_log /config/log/proxy_host-1.log proxy location / { # Force SSL include conf.d/include/force-ssl.conf; # HSTS (ngx_http_headers_module is required) (31536000 seconds = 1 year) add_header Strict-Transport-Security "max-age=31536000; preload" always; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_http_version 1.1; # Proxy! include conf.d/include/proxy.conf; } # Custom include /data/nginx/custom/server_proxy[.]conf; } ``` - Other hardware notes: Media mounted with Docker volume bindings (local) - Installed Plugins: AudioDB, Kodi Sync Queue, MusicBrainz, OMDb, Open Subtitles, TheTVDB **Client System (please complete the following information):** - Device: Apple iPhone 6s - OS: iOS 13.6 - Client: iOS Safari, iOS Firefox, iOS Jellyfin App - Browser (if Web client): iOS Safari (Firefox uses the same engine) - Client and Browser Version: 13.1 **Screenshots** <img width="400" alt="IMG_0606" src="https://user-images.githubusercontent.com/3996360/90415933-1a674f00-e0b2-11ea-8798-d45015bc831d.jpg"> **Extra** Media info for video where playback **fails**: <img width="400" alt="Screenshot 2020-08-17 at 17 53 50" src="https://user-images.githubusercontent.com/3996360/90416735-243d8200-e0b3-11ea-902d-88e6f463b618.png"> Media info for video where playback **does work**: <img width="400" alt="Screenshot 2020-08-17 at 17 53 30" src="https://user-images.githubusercontent.com/3996360/90416751-299acc80-e0b3-11ea-82d5-b4a9b4ee0d61.png">
Author
Owner

@ghost commented on GitHub (Aug 18, 2020):

According to the documentation here, the websocket options

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

should be set on the websocket location (/socket) instead of the root location (/). I'd give that a try.

@ghost commented on GitHub (Aug 18, 2020): According to the documentation [here](https://jellyfin.org/docs/general/networking/nginx.html), the websocket options ``` proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; ``` should be set on the websocket location (`/socket`) instead of the root location (`/`). I'd give that a try.
Author
Owner

@bartvdbraak commented on GitHub (Aug 18, 2020):

According to the documentation here, the websocket options

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

should be set on the websocket location (/socket) instead of the root location (/). I'd give that a try.

Unfortunately that didn't work :(

@bartvdbraak commented on GitHub (Aug 18, 2020): > According to the documentation [here](https://jellyfin.org/docs/general/networking/nginx.html), the websocket options > > ``` > proxy_http_version 1.1; > proxy_set_header Upgrade $http_upgrade; > proxy_set_header Connection "upgrade"; > ``` > > should be set on the websocket location (`/socket`) instead of the root location (`/`). I'd give that a try. Unfortunately that didn't work :(
Author
Owner

@bartvdbraak commented on GitHub (Aug 18, 2020):

I can't understand why I can stream video on iOS when I access Jellyfin through local ip, but when I access it through the domain name (nginx reverse proxy -> cloudfare dns) it won't. Everytime works fine on Linux or MacOS.

@bartvdbraak commented on GitHub (Aug 18, 2020): I can't understand why I can stream video on iOS when I access Jellyfin through local ip, but when I access it through the domain name (nginx reverse proxy -> cloudfare dns) it won't. Everytime works fine on Linux or MacOS.
Author
Owner

@bartvdbraak commented on GitHub (Aug 18, 2020):

Okay, it has to do with not being able to transcode video to iOS device at all, since the video that was being played trough the local access is a directstream video.

@bartvdbraak commented on GitHub (Aug 18, 2020): Okay, it has to do with not being able to transcode video to iOS device at all, since the video that was being played trough the local access is a directstream video.
Author
Owner

@Nazar78 commented on GitHub (Aug 29, 2020):

I have similar issues with Tizen 5.x. Not only the Tizen app, it also exhibit the same issue with the Samsung TV builtin web browser. Browsing through the interface via domain proxy is ok but it will fail to play any video once initiated with no connection trace on any of the nginx nor JF logs.

But if I were to use a reverse proxy with IP based (not using domain) listening on a different port i.e. Public-IP:8097 up-streamed to JF-IP:8096, the media playback will have no issue. Strange... no idea where is the fault as I'm having difficulties debugging the Tizen app with large js files most of the time hanging. @dmitrylyzo has kindly helped to point out a file scheme error but I have no idea where to look since I've difficulties debugging it.

https://github.com/jellyfin/jellyfin-tizen/issues/46

Edited: With regards to using a Public-IP, I also have no issue with the playback using domain name if I open the nginx reverse proxy port directly to the public i.e. http://subdomain.domain.com:8097 but this defeat the purpose of having reverse proxy in the first place :(

@Nazar78 commented on GitHub (Aug 29, 2020): I have similar issues with Tizen 5.x. Not only the Tizen app, it also exhibit the same issue with the Samsung TV builtin web browser. Browsing through the interface via domain proxy is ok but it will fail to play any video once initiated with no connection trace on any of the nginx nor JF logs. But if I were to use a reverse proxy with IP based (not using domain) listening on a different port i.e. Public-IP:8097 up-streamed to JF-IP:8096, the media playback will have no issue. Strange... no idea where is the fault as I'm having difficulties debugging the Tizen app with large js files most of the time hanging. @dmitrylyzo has kindly helped to point out a `file` scheme error but I have no idea where to look since I've difficulties debugging it. https://github.com/jellyfin/jellyfin-tizen/issues/46 **Edited**: With regards to using a Public-IP, I also have no issue with the playback using domain name if I open the nginx reverse proxy port directly to the public i.e. http://subdomain.domain.com:8097 but this defeat the purpose of having reverse proxy in the first place :(
Author
Owner

@dmitrylyzo commented on GitHub (Aug 29, 2020):

@dmitrylyzo has kindly helped to point out a file scheme error but I have no idea where to look since I've difficulties debugging it.

file scheme issue only occurs on bundled clients (Tizen, old Android). ApiClient uses cache which doesn't support file.
So it is not related.
I've added more info for Tizen https://github.com/jellyfin/jellyfin-tizen/issues/46#issuecomment-683271555

@dmitrylyzo commented on GitHub (Aug 29, 2020): > @dmitrylyzo has kindly helped to point out a `file` scheme error but I have no idea where to look since I've difficulties debugging it. `file` scheme issue only occurs on bundled clients (Tizen, old Android). ApiClient uses cache which doesn't support `file`. So it is not related. I've added more info for Tizen https://github.com/jellyfin/jellyfin-tizen/issues/46#issuecomment-683271555
Author
Owner

@Nazar78 commented on GitHub (Sep 1, 2020):

@bartvdbraak could you try switch your reverse proxy to HTTP instead of HTTPS then test? I don't have an iOS but on my Samsung Tizen which is having playback issue, switching from HTTPS to HTTP domain reverse proxy the playback works instantly. Details: https://github.com/jellyfin/jellyfin-tizen/issues/46#issuecomment-684663012

My HTTP domain was previously redirected to HTTPS and had no issue at all with browsers and Android clients.

@Nazar78 commented on GitHub (Sep 1, 2020): @bartvdbraak could you try switch your reverse proxy to HTTP instead of HTTPS then test? I don't have an iOS but on my Samsung Tizen which is having playback issue, switching from HTTPS to HTTP domain reverse proxy the playback works instantly. Details: https://github.com/jellyfin/jellyfin-tizen/issues/46#issuecomment-684663012 My HTTP domain was previously redirected to HTTPS and had no issue at all with browsers and Android clients.
Author
Owner

@bartvdbraak commented on GitHub (Sep 1, 2020):

@bartvdbraak could you try switch your reverse proxy to HTTP instead of HTTPS then test? I don't have an iOS but on my Samsung Tizen which is having playback issue, switching from HTTPS to HTTP domain reverse proxy the playback works instantly. Details: jellyfin/jellyfin-tizen#46 (comment)

My HTTP domain was previously redirected to HTTPS and had no issue at all with browsers and Android clients.

I removed SSL and forcing HTTPS from my Nginx Reverse Proxy as well as Cloudflare Encryption.

Accessing Jellyfin from http://sub.domain.tld on my iPhone 6s through Safari still gave me a 'Playback Error' icon while trying to play the video.

Here's the log from jellyfin (I removed some personal details):

[2020-09-01 18:43:30.323 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False
[2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv"
[2020-09-01 18:43:30.539 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] }
[2020-09-01 18:43:31.420 +00:00] [WRN] [18] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "public.ip". Time (slow): 0:00:01.1567604. "http://sub.domain.tld/Sessions/Playing/Progress"
[2020-09-01 18:43:31.727 +00:00] [WRN] [67] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "public.ip". Time (slow): 0:00:01.5984725. "http://sub.domain.tld/Sessions/Playing/Progress"
[2020-09-01 18:43:31.730 +00:00] [WRN] [53] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 200 to "public.ip". Time (slow): 0:00:00.8819544. "http://sub.domain.tld/videos/6cc50bab-0fa7-41d0-c4e6-2cbb19a0d297/master.m3u8?DeviceId=TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182XzEgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBGeGlPUy84LjEuNCBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDUuMS4xNXwxNTk4OTg1NTIyNDc0&MediaSourceId=6cc50bab0fa741d0c4e62cbb19a0d297&VideoCodec=h264&AudioCodec=ac3,eac3,mp3,aac&AudioStreamIndex=1&VideoBitrate=416000&AudioBitrate=384000&PlaySessionId=187b7b80d30b4b7c9f88b61e891c6c3c&SubtitleMethod=Encode&TranscodingMaxAudioChannels=2&RequireAvc=false&Tag=70c8a4a2ab9fb27767a2b3b865ceb026&SegmentContainer=ts&MinSegments=2&BreakOnNonKeyFrames=True&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&h264-deinterlace=true&TranscodeReasons=ContainerNotSupported,VideoCodecNotSupported,AudioCodecNotSupported,ContainerBitrateExceedsLimit&allowVideoStreamCopy=false&allowAudioStreamCopy=false,false"
[2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False
[2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv"
[2020-09-01 18:43:31.754 +00:00] [WRN] [16] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 200 to "public.ip". Time (slow): 0:00:01.2275325. "http://sub.domain.tld/Items/6cc50bab0fa741d0c4e62cbb19a0d297/PlaybackInfo?UserId=b02bad39399d4b148d5ccc64cbc23f79&StartTimeTicks=10364256625&IsPlayback=true&AutoOpenLiveStream=true&AudioStreamIndex=1&SubtitleStreamIndex=-1&EnableDirectPlay=false&EnableDirectStream=false&AllowVideoStreamCopy=false&AllowAudioStreamCopy=false&MediaSourceId=6cc50bab0fa741d0c4e62cbb19a0d297&MaxStreamingBitrate=800000"
[2020-09-01 18:43:41.245 +00:00] [WRN] [53] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "::ffff:172.17.0.5" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
[2020-09-01 18:43:41.246 +00:00] [INF] [53] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" closed
[2020-09-01 18:43:42.456 +00:00] [INF] [40] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" request
[2020-09-01 18:43:43.033 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
   at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken)
   at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
[2020-09-01 18:43:43.135 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
   at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken)
   at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
[2020-09-01 18:43:43.237 +00:00] [ERR] [18] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
   at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken)
   at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
[2020-09-01 18:44:03.897 +00:00] [WRN] [66] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "::ffff:172.17.0.5" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
[2020-09-01 18:44:03.897 +00:00] [INF] [66] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" closed
[2020-09-01 18:44:04.792 +00:00] [INF] [60] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" request
[2020-09-01 18:44:22.065 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }] }
[2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv"
[2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False
[2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv"
[2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False
[2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000
[2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
[2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv"
[2020-09-01 18:44:43.028 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
   at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken)
   at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
[2020-09-01 18:44:43.129 +00:00] [ERR] [43] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
   at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken)
   at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
[2020-09-01 18:44:43.231 +00:00] [ERR] [43] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900"
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags
   at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult)
   at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state)
@bartvdbraak commented on GitHub (Sep 1, 2020): > @bartvdbraak could you try switch your reverse proxy to HTTP instead of HTTPS then test? I don't have an iOS but on my Samsung Tizen which is having playback issue, switching from HTTPS to HTTP domain reverse proxy the playback works instantly. Details: [jellyfin/jellyfin-tizen#46 (comment)](https://github.com/jellyfin/jellyfin-tizen/issues/46#issuecomment-684663012) > > My HTTP domain was previously redirected to HTTPS and had no issue at all with browsers and Android clients. I removed SSL and forcing HTTPS from my Nginx Reverse Proxy as well as Cloudflare Encryption. Accessing Jellyfin from `http://sub.domain.tld` on my iPhone 6s through Safari still gave me a 'Playback Error' icon while trying to play the video. Here's the log from jellyfin (I removed some personal details): ``` [2020-09-01 18:43:30.323 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False [2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-09-01 18:43:30.324 +00:00] [INF] [64] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv" [2020-09-01 18:43:30.539 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }] } [2020-09-01 18:43:31.420 +00:00] [WRN] [18] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "public.ip". Time (slow): 0:00:01.1567604. "http://sub.domain.tld/Sessions/Playing/Progress" [2020-09-01 18:43:31.727 +00:00] [WRN] [67] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 204 to "public.ip". Time (slow): 0:00:01.5984725. "http://sub.domain.tld/Sessions/Playing/Progress" [2020-09-01 18:43:31.730 +00:00] [WRN] [53] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 200 to "public.ip". Time (slow): 0:00:00.8819544. "http://sub.domain.tld/videos/6cc50bab-0fa7-41d0-c4e6-2cbb19a0d297/master.m3u8?DeviceId=TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182XzEgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBGeGlPUy84LjEuNCBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDUuMS4xNXwxNTk4OTg1NTIyNDc0&MediaSourceId=6cc50bab0fa741d0c4e62cbb19a0d297&VideoCodec=h264&AudioCodec=ac3,eac3,mp3,aac&AudioStreamIndex=1&VideoBitrate=416000&AudioBitrate=384000&PlaySessionId=187b7b80d30b4b7c9f88b61e891c6c3c&SubtitleMethod=Encode&TranscodingMaxAudioChannels=2&RequireAvc=false&Tag=70c8a4a2ab9fb27767a2b3b865ceb026&SegmentContainer=ts&MinSegments=2&BreakOnNonKeyFrames=True&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&h264-deinterlace=true&TranscodeReasons=ContainerNotSupported,VideoCodecNotSupported,AudioCodecNotSupported,ContainerBitrateExceedsLimit&allowVideoStreamCopy=false&allowAudioStreamCopy=false,false" [2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False [2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-09-01 18:43:31.751 +00:00] [INF] [16] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv" [2020-09-01 18:43:31.754 +00:00] [WRN] [16] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 200 to "public.ip". Time (slow): 0:00:01.2275325. "http://sub.domain.tld/Items/6cc50bab0fa741d0c4e62cbb19a0d297/PlaybackInfo?UserId=b02bad39399d4b148d5ccc64cbc23f79&StartTimeTicks=10364256625&IsPlayback=true&AutoOpenLiveStream=true&AudioStreamIndex=1&SubtitleStreamIndex=-1&EnableDirectPlay=false&EnableDirectStream=false&AllowVideoStreamCopy=false&AllowAudioStreamCopy=false&MediaSourceId=6cc50bab0fa741d0c4e62cbb19a0d297&MaxStreamingBitrate=800000" [2020-09-01 18:43:41.245 +00:00] [WRN] [53] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "::ffff:172.17.0.5" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake." [2020-09-01 18:43:41.246 +00:00] [INF] [53] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" closed [2020-09-01 18:43:42.456 +00:00] [INF] [40] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" request [2020-09-01 18:43:43.033 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken) at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken) [2020-09-01 18:43:43.135 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken) at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken) [2020-09-01 18:43:43.237 +00:00] [ERR] [18] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken) at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken) [2020-09-01 18:44:03.897 +00:00] [WRN] [66] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "::ffff:172.17.0.5" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake." [2020-09-01 18:44:03.897 +00:00] [INF] [66] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" closed [2020-09-01 18:44:04.792 +00:00] [INF] [60] Emby.Server.Implementations.HttpServer.HttpListenerHost: WS "::ffff:172.17.0.5" request [2020-09-01 18:44:22.065 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: 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: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", VideoCodec: "h264,h265,hevc,vc1", Type: Video }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a,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,m4b", AudioCodec: "alac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: null, AudioCodec: "wav", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,eac3,mp3,aac,dca,dts,flac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }] } [2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-09-01 18:44:22.086 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv" [2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False [2020-09-01 18:44:22.087 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv" [2020-09-01 18:44:22.088 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: RemoteClientBitrateLimit: 120000000, RemoteIp: "public.ip", IsInLocalNetwork: False [2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 [2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/movies/Movie (Year)/Movie.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False [2020-09-01 18:44:22.089 +00:00] [INF] [43] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/movies/Movie (Year)/Movie.mkv" [2020-09-01 18:44:43.028 +00:00] [ERR] [77] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken) at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken) [2020-09-01 18:44:43.129 +00:00] [ERR] [43] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) at Emby.Server.Implementations.Net.UdpSocket.SendToAsync(Byte[] buffer, Int32 offset, Int32 size, IPEndPoint endPoint, CancellationToken cancellationToken) at Rssdp.Infrastructure.SsdpCommunicationsServer.SendFromSocket(ISocket socket, Byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken) [2020-09-01 18:44:43.231 +00:00] [ERR] [43] Emby.Dlna.Main.DlnaEntryPoint: Error sending socket message from "10.6.0.1" to "239.255.255.250:1900" System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags at System.Net.Sockets.Socket.DoBeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint endPointSnapshot, SocketAddress socketAddress, OverlappedAsyncResult asyncResult) at System.Net.Sockets.Socket.BeginSendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, Object state) ```
Author
Owner

@BaronGreenback commented on GitHub (Sep 5, 2020):

The bad value for ai_flags is an "unable to create scoket error". Have seen this when the process hasn't got enough permissions, and also when broadcast wasn't enabled. That might be 10.6.1.

Just to get my head aound this - your https tunnel finished on 443 on your proxy, and then it's http between the proxy and JF?

@BaronGreenback commented on GitHub (Sep 5, 2020): The bad value for ai_flags is an "unable to create scoket error". Have seen this when the process hasn't got enough permissions, and also when broadcast wasn't enabled. That might be 10.6.1. Just to get my head aound this - your https tunnel finished on 443 on your proxy, and then it's http between the proxy and JF?
Author
Owner

@bartvdbraak commented on GitHub (Sep 10, 2020):

The bad value for ai_flags is an "unable to create scoket error". Have seen this when the process hasn't got enough permissions, and also when broadcast wasn't enabled. That might be 10.6.1.

I am running Jellyfin in docker, do I have to change permissions for stuff? Check if I can use ffmpeg on the files in the container?

Just to get my head aound this - your https tunnel finished on 443 on your proxy, and then it's http between the proxy and JF?

  • Jellyfin runs locally on http://192.168.1.6:8096
  • Nginx Proxy Manager forwards traffic from https://sub.domain.tld to http://192.168.1.6:8096
  • It has a SSL certificate as well as HTTPS
@bartvdbraak commented on GitHub (Sep 10, 2020): > The bad value for ai_flags is an "unable to create scoket error". Have seen this when the process hasn't got enough permissions, and also when broadcast wasn't enabled. That might be 10.6.1. I am running Jellyfin in docker, do I have to change permissions for stuff? Check if I can use ffmpeg on the files in the container? > Just to get my head aound this - your https tunnel finished on 443 on your proxy, and then it's http between the proxy and JF? - Jellyfin runs locally on `http://192.168.1.6:8096` - Nginx Proxy Manager forwards traffic from `https://sub.domain.tld` to `http://192.168.1.6:8096` - It has a SSL certificate as well as HTTPS
Author
Owner

@BaronGreenback commented on GitHub (Sep 10, 2020):

Sorry - not an expert at docker. If you are on matrix, it might be worth posting on there.

@BaronGreenback commented on GitHub (Sep 10, 2020): Sorry - not an expert at docker. If you are on matrix, it might be worth posting on there.
Author
Owner

@ChildLearningClub commented on GitHub (Jan 3, 2021):

@bartvdbraak This should fix your issue with requiring you to transcode on ios and allow for you to directly stream your video on your ios device.

From your log:
Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000

You have two options:

  1. pre transcode your content using something like handbrake down to below the 800000 limit or
  2. follow https://github.com/jellyfin/jellyfin-web/issues/1642 to get it working
@ChildLearningClub commented on GitHub (Jan 3, 2021): @bartvdbraak This should fix your issue with requiring you to transcode on ios and allow for you to directly stream your video on your ios device. From your log: Bitrate exceeds DirectStream limit: media bitrate: 11043265, max bitrate: 800000 You have two options: 1. pre transcode your content using something like handbrake down to below the 800000 limit or 2. follow https://github.com/jellyfin/jellyfin-web/issues/1642 to get it working
Author
Owner

@cvium commented on GitHub (Apr 9, 2021):

BW limit has been removed. Let us know if the issue still persists in 10.7.1+.

@cvium commented on GitHub (Apr 9, 2021): BW limit has been removed. Let us know if the issue still persists in 10.7.1+.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#2050