• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Troubleshooting Direct Play works only when "allow transcoding" Turned Off

     
    • 0 Vote(s) - 0 Average

    Direct Play works only when "allow transcoding" Turned Off

    thxcloudsfer
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Feb
    Reputation: 0
    Country:United States
    #1
    2025-02-26, 05:19 AM (This post was last modified: 2025-02-26, 05:38 AM by thxcloudsfer. Edited 1 time in total.)
    Hi all,

    I'm new to Jellyfin and just set up a home server. Most of the videos I've added to my library were curated as I was careful to avoid the codecs that aren't supported by my client. I'm running Jellyfin on WebOS, which I fully understand has limitations and is worse than an Android set top box, but is known to play all of the codecs on LG's site (and apparently recent developments have made it possible to stream DV with WebOS, though I haven't tested this!). Almost all of my media library is able to direct stream except videos from a single series (I'll call this Video #1). On this series, the videos take longer to start (with the preview thumbnail occupying the screen) until it eventually starts by transcoding. The "reason for transcoding" is listed as "There was an error starting direct playback". This led me to believe that there was something wrong with the container and it actually wasn't supported, but when I uncheck the box " Allow video playback that requires transcoding" in my user settings and restart the app, all of the sudden the video will direct stream! With the box checked, I found another series that had no issues with direct play and had very similar container properties (Video #2). I ran mediainfo on both files, pasted below. The only difference I thought might be an issue was that Video #1 is variable bitrate while #2 is constant, but given the "overall mode" is variable for both, I don't think this is an issue. I also tried disabling auto subtitles per this post in case the forced subs were somehow a problem, but this didn't seem to affect the transcoding issue. In addition, I enabled debug logging, but it hasn't produced much useful output (it just confirms that no transcoding is requested when direct play begins). I'd greatly appreciate any help narrowing down what the issue might be, given that it seems like all audio tracks/subtitles work both with and without transcoding allowed!

    MediaInfo for Video #1 (the issue video):
    Code:
    General
    Unique ID                                : 1234 (0x1234)
    Complete name                            : /data/Media/Video#1.mkv
    Format                                  : Matroska
    Format version                          : Version 4
    File size                                : 6.90 GiB
    Duration                                : 24 min 10 s
    Overall bit rate mode                    : Variable
    Overall bit rate                        : 41.1 Mb/s
    Frame rate                              : 23.976 FPS
    Movie name                              : S01E01 - Title
    Encoded date                            : 2025-01-27 10:46:37 UTC
    Writing application                      : mkvmerge v88.0 ('All I Know') 64-bit
    Writing library                          : libebml v1.4.5 + libmatroska v1.7.1
    Cover                                    : Yes
    Attachments                              : Bahnschrift.ttf / Acme-Regular.ttf / ArchitectsDaughter-Regular.ttf / Audiowide-Regular.ttf / augie.tff / AVENIRNEXTROUNDEDPRO-DEMI.OTF / BadScript-Regular.ttf / BalsamiqSans-Bold.ttf / BalsamiqSans-Regular.ttf / BESTAGON-ITALIC.OTF / BESTAGON-REGULAR.OTF / BESTAGON-THICK ITALIC.OTF / BESTAGON-THICK.OTF / BESTAGON-THIN ITALIC.OTF / BESTAGON-THIN.OTF / BilboSwashCaps-Regular.ttf / Caveat-VariableFont_wght (1).ttf / Caveat-VariableFont_wght.ttf / CHOPPERRR.otf / CraftyGirls-Regular.ttf / CURLZ__.TTF / FFFFORWA.TTF / GHelveticaNeueLTStd-LtEx.otf / GochiHand-Regular.ttf / HERCULES.TTF / Kalam-Regular.ttf / KleeOne-Regular.ttf / LATO-EXTRABOLDITALIC.TTF / LATO-EXTRABOLD_0.TTF / LATO-EXTRABOLD_1.TTF / LovedbytheKing-Regular.ttf / Martel-Regular.ttf / Merriweather-Bold.ttf / NOODLESOUP.TTF / PatrickHand-Regular.ttf / PermanentMarker-Regular.ttf / PlayfairDisplay-VariableFont_wght.ttf / Proxima Nova Extrabold.otf / RabioHead.ttf / Ramabhadra-Regular.ttf / ReenieBeanie-Regular.ttf / ROBOTO-REGULAR_0.TTF / SF-UI-Display-Regular.otf / Sofia_Pro_Soft_Regular.ttf / SqueakyChalkSound-ZG8.ttf / Sriracha-Regular.ttf / SUBWT___.ttf / TavernloreBB-Regular.otf / Bahnschrift.ttf / Acme-Regular.ttf / ArchitectsDaughter-Regular.ttf / Audiowide-Regular.ttf / augie.tff / AVENIRNEXTROUNDEDPRO-DEMI.OTF / BadScript-Regular.ttf / BalsamiqSans-Bold.ttf / BalsamiqSans-Regular.ttf / BESTAGON-ITALIC.OTF / BESTAGON-REGULAR.OTF / BESTAGON-THICK ITALIC.OTF / BESTAGON-THICK.OTF / BESTAGON-THIN ITALIC.OTF / BESTAGON-THIN.OTF / BilboSwashCaps-Regular.ttf / Caveat-VariableFont_wght (1).ttf / Caveat-VariableFont_wght.ttf / CHOPPERRR.otf / CraftyGirls-Regular.ttf / CURLZ__.TTF / FFFFORWA.TTF / GHelveticaNeueLTStd-LtEx.otf / GochiHand-Regular.ttf / HERCULES.TTF / Kalam-Regular.ttf / KleeOne-Regular.ttf / LATO-EXTRABOLDITALIC.TTF / LATO-EXTRABOLD_0.TTF / LATO-EXTRABOLD_1.TTF / LovedbytheKing-Regular.ttf / Martel-Regular.ttf / Merriweather-Bold.ttf / NOODLESOUP.TTF / PatrickHand-Regular.ttf / PermanentMarker-Regular.ttf / PlayfairDisplay-VariableFont_wght.ttf / Proxima Nova Extrabold.otf / RabioHead.ttf / Ramabhadra-Regular.ttf / ReenieBeanie-Regular.ttf / ROBOTO-REGULAR_0.TTF / SF-UI-Display-Regular.otf / Sofia_Pro_Soft_Regular.ttf / SqueakyChalkSound-ZG8.ttf / Sriracha-Regular.ttf / SUBWT___.ttf / TavernloreBB-Regular.otf / Sofia_Pro_Soft_Regular.ttf / SqueakyChalkSound-ZG8.ttf / Sriracha-Regular.ttf / SUBWT___.ttf / TavernloreBB-Regular.otf / courbd.ttf / Cucho Bold_1.otf / Mijas-Ultra_0.otf / 000GoombellaTB-Regular.ttf / AstounderSquaredBB.otf / giaothong2.ttf / 000SkippySharpiCiel-Regular.ttf / 000BillyTheFlyingRobotLCBB-Regular.otf / SVN-Avo bold.ttf / iCielPequena.otf / 000 Augie [TeddyBear].ttf / 000 10 Cent Comics [TeddyBear].ttf / 000 Akbar [TeddyBear].ttf / 000 Chinacat [TeddyBear].ttf / 000 Clairvoyant BB [TeddyBear].ttf / 000 Blambot Pro Lite TB.ttf / 000 CCGabrielBautistaLito TB.ttf / SVN-Bree Regular.ttf / SVN-Amsi Narw Bold.ttf / SVN-Bali Script.ttf / iciel Cadena.ttf / UVNVietSach.TTF / SVN-Bear.ttf / UVNAnhHai_R.TTF / 9Slide03-Jura-Medium_1.ttf / A-otfMaruFolkProM.otf / A-otfハッピーnStdR.otf / A-otfハッピーnStdR.otf / Aqua_pfont-str.ttf / Bahnschrift.ttf / Bahnschrift-Bold.ttf / BrokeStone.otf / DftegakimegumiStdW3.otf / EverythingRises.ttf / FiraSansMedium.ttf / FiraSansMediumItalic.ttf / Fot-カラットStdUb-Black.otf / HelveticaLtBold.ttf / NotoSans.ttf / NotoSansMedium.ttf / Notosans-regular-mary.ttf / SegoeUi.ttf / SegoeUiSemibold-SemiBold.ttf / Acme-Regular.ttf / ArchitectsDaughter-Regular.ttf / Audiowide-Regular.ttf / augie.tff / AVENIRNEXTROUNDEDPRO-DEMI.OTF / BadScript-Regular.ttf / BalsamiqSans-Bold.ttf / BalsamiqSans-Regular.ttf / BESTAGON-ITALIC.OTF / BESTAGON-REGULAR.OTF / BESTAGON-THICK ITALIC.OTF / BESTAGON-THICK.OTF / BESTAGON-THIN ITALIC.OTF / BESTAGON-THIN.OTF / BilboSwashCaps-Regular.ttf / Caveat-VariableFont_wght (1).ttf / Caveat-VariableFont_wght.ttf / CHOPPERRR.otf / CraftyGirls-Regular.ttf / CURLZ__.TTF / FFFFORWA.TTF / GHelveticaNeueLTStd-LtEx.otf / GochiHand-Regular.ttf / HERCULES.TTF / Kalam-Regular.ttf / KleeOne-Regular.ttf / LATO-EXTRABOLD_0.TTF / LATO-EXTRABOLD_1.TTF / LATO-EXTRABOLDITALIC.TTF / LovedbytheKing-Regular.ttf / Martel-Regular.ttf / Merriweather-Bold.ttf / NOODLESOUP.TTF / PatrickHand-Regular.ttf / PermanentMarker-Regular.ttf / PlayfairDisplay-VariableFont_wght.ttf / Proxima Nova Extrabold.otf / RabioHead.ttf / Ramabhadra-Regular.ttf / ReenieBeanie-Regular.ttf / ROBOTO-REGULAR_0.TTF / SF-UI-Display-Regular.otf / GandhiSans-Italic.otf / GandhiSans-Regular.otf / cover.jpg / arial.ttf / arialbd.ttf / comic.ttf / comicbd.ttf / CONSOLA.ttf / CONSOLAB.ttf / Roboto-Medium.ttf / Roboto-MediumItalic.ttf / times.ttf / timesbd.ttf / trebuc.ttf / trebucbd.ttf / verdana.ttf / verdanab.ttf / tahoma.ttf / times.ttf / trebuc.ttf / verdana.ttf / AdobeArabic-Bold.otf / Arial_Black.ttf / arialbd.ttf / comic.ttf / cour.ttf / georgia.ttf / impact.ttf / RixLoveFool.ttf / GandhiSans-Bold.otf / GandhiSans-BoldItalic.otf / NotoSansJP-Bold.ttf / Ampersand.ttf / Arial.ttf / DjbChalkItUp.TTF / DkDownwardFall.TTF / Dotf1.ttf / FaracoHand.TTF / Fixedsysttf-SemiBold.ttf / Grain.ttf / HelveticaNeue.otf / Panton-Bold.OTF

    Video
    ID                                      : 1
    Format                                  : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                          : High@L4.1
    Format settings                          : CABAC / 4 Ref Frames
    Format settings, CABAC                  : Yes
    Format settings, Reference frames        : 4 frames
    Format settings, Slice count            : 4 slices per frame
    Codec ID                                : V_MPEG4/ISO/AVC
    Duration                                : 24 min 1 s
    Bit rate mode                            : Variable
    Bit rate                                : 36.7 Mb/s
    Maximum bit rate                        : 39.0 Mb/s
    Width                                    : 1 920 pixels
    Height                                  : 1 080 pixels
    Display aspect ratio                    : 16:9
    Frame rate mode                          : Constant
    Frame rate                              : 23.976 (24000/1001) FPS
    Color space                              : YUV
    Chroma subsampling                      : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                      : 0.738
    Time code of first frame                : 01:00:00:00
    Stream size                              : 6.16 GiB (89%)
    Default                                  : Yes
    Forced                                  : No

    Audio #1
    ID                                      : 2
    Format                                  : PCM
    Format settings                          : Little / Signed
    Codec ID                                : A_PCM/INT/LIT
    Duration                                : 24 min 1 s
    Bit rate mode                            : Constant
    Bit rate                                : 2 304 kb/s
    Channel(s)                              : 2 channels
    Sampling rate                            : 48.0 kHz
    Frame rate                              : 200.000 FPS (240 SPF)
    Bit depth                                : 24 bits
    Stream size                              : 396 MiB (6%)
    Title                                    : Commentary
    Language                                : English
    Default                                  : No
    Forced                                  : No

    Audio #2
    ID                                      : 3
    Format                                  : FLAC
    Format/Info                              : Free Lossless Audio Codec
    Codec ID                                : A_FLAC
    Duration                                : 24 min 1 s
    Bit rate mode                            : Variable
    Bit rate                                : 1 346 kb/s
    Channel(s)                              : 2 channels
    Channel layout                          : L R
    Sampling rate                            : 48.0 kHz
    Frame rate                              : 11.719 FPS (4096 SPF)
    Bit depth                                : 24 bits
    Compression mode                        : Lossless
    Stream size                              : 231 MiB (3%)
    Title                                    : Japanese / FLAC / 2.0 / 48 kHz / 1346 kbps
    Writing library                          : libFLAC 1.4.3 (2023-06-23)
    Language                                : Japanese
    Default                                  : Yes
    Forced                                  : No
    MD5 of the unencoded content            : D1234

    Audio #3
    ID                                      : 4
    Format                                  : E-AC-3
    Format/Info                              : Enhanced AC-3
    Commercial name                          : Dolby Digital Plus
    Codec ID                                : A_EAC3
    Duration                                : 24 min 0 s
    Bit rate mode                            : Constant
    Bit rate                                : 224 kb/s
    Channel(s)                              : 2 channels
    Channel layout                          : L R
    Sampling rate                            : 48.0 kHz
    Frame rate                              : 31.250 FPS (1536 SPF)
    Compression mode                        : Lossy
    Delay relative to video                  : 7 ms
    Stream size                              : 38.5 MiB (1%)
    Title                                    : English / E-AC-3 / 2.0 / 48 kHz / 224 kbps
    Language                                : English
    Service kind                            : Complete Main
    Default                                  : No
    Forced                                  : No

    Text #1
    ID                                      : 5
    Format                                  : ASS
    Codec ID                                : S_TEXT/ASS
    Codec ID/Info                            : Advanced Sub Station Alpha
    Duration                                : 17 min 55 s
    Bit rate                                : 16.7 kb/s
    Frame rate                              : 0.617 FPS
    Count of elements                        : 663
    Compression mode                        : Lossless
    Stream size                              : 2.14 MiB (0%)
    Title                                    : English / Forced / ASS
    Language                                : English
    Default                                  : No
    Forced                                  : Yes

    Text #2
    ID                                      : 6
    Format                                  : ASS
    Codec ID                                : S_TEXT/ASS
    Codec ID/Info                            : Advanced Sub Station Alpha
    Duration                                : 23 min 49 s
    Bit rate                                : 12.7 kb/s
    Frame rate                              : 0.707 FPS
    Count of elements                        : 1011
    Compression mode                        : Lossless
    Stream size                              : 2.16 MiB (0%)
    Title                                    : English / Full / ASS
    Language                                : English
    Default                                  : Yes
    Forced                                  : No

    Menu
    00:00:00.000                            : en:Prologue

    MediaInfo for Video #2:
    Code:
    General
    Unique ID                                : 5678 (0x5678)
    Complete name                            : /data/Media/Video#2.mkv
    Format                                  : Matroska
    Format version                          : Version 4
    File size                                : 6.66 GiB
    Duration                                : 24 min 20 s
    Overall bit rate mode                    : Variable
    Overall bit rate                        : 38.6 Mb/s
    Frame rate                              : 23.976 FPS
    Encoded date                            : 2025-01-15 10:48:19 UTC
    Writing application                      : mkvmerge v89.0 ('And the Melody Still Lingers On (Night in Tunisia)') 64-bit
    Writing library                          : libebml v1.4.5 + libmatroska v1.7.1
    Attachments                              : arial.ttf / arialbd.ttf / comic.ttf / comicbd.ttf / CONSOLA.ttf / CONSOLAB.ttf / Dragon-Serial-Heavy-Regular.ttf / ebrimabd.ttf / FOT-GMaruGoPro-B.otf / FOT-UDMarugo_LargePr6-B.otf / Kan2EngGSZS3.otf / MyriadPro (Bold).otf / nobilty.ttf / nyala.ttf / pastel crayon.ttf / PostAntiqua-SemiBold.ttf / puffmod1.ttf / Rakoon Personal Use.otf / Rambla.otf / Roboto-Medium.ttf / Roboto-MediumItalic.ttf / Rubik-Regular_0.ttf / Rubik-SemiBoldItalic-NEW.ttf / Rubik-SemiBold-NEW.ttf / RyoGothicPlusN-Regular.otf / Salsa-Regular.otf / segoeui.ttf / squeaky chalk sound.ttf / Stoobs.otf / times.ttf / timesbd.ttf / trebuc.ttf / trebucbd.ttf / VAGRoundedBT-Regular.otf / verdana.ttf / verdanab.ttf / Vogel Normal.ttf

    Video
    ID                                      : 1
    Format                                  : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                          : High@L4.1
    Format settings                          : CABAC / 4 Ref Frames
    Format settings, CABAC                  : Yes
    Format settings, Reference frames        : 4 frames
    Format settings, Slice count            : 4 slices per frame
    Codec ID                                : V_MPEG4/ISO/AVC
    Duration                                : 24 min 40 s
    Bit rate mode                            : Constant
    Bit rate                                : 39.0 Mb/s
    Width                                    : 1 920 pixels
    Height                                  : 1 080 pixels
    Display aspect ratio                    : 16:9
    Frame rate mode                          : Constant
    Frame rate                              : 23.976 (24000/1001) FPS
    Color space                              : YUV
    Chroma subsampling                      : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                      : 0.784
    Time code of first frame                : 01:00:00:00
    Stream size                              : 6.41 GiB (96%)
    Title                                    : Title
    Default                                  : Yes
    Forced                                  : No
    Audio
    ID                                      : 2
    Format                                  : FLAC
    Format/Info                              : Free Lossless Audio Codec
    Codec ID                                : A_FLAC
    Duration                                : 24 min 40 s
    Bit rate mode                            : Variable
    Bit rate                                : 1 320 kb/s
    Channel(s)                              : 2 channels
    Channel layout                          : L R
    Sampling rate                            : 48.0 kHz
    Frame rate                              : 10.417 FPS (4608 SPF)
    Bit depth                                : 24 bits
    Compression mode                        : Lossless
    Stream size                              : 233 MiB (3%)
    Title                                    : Jpn FLAC 2.0
    Writing library                          : Lavf61.5.101
    Language                                : Japanese
    Default                                  : Yes
    Forced                                  : No
    MD5 of the unencoded content            : B5678

    Text #1
    ID                                      : 3
    Format                                  : ASS
    Codec ID                                : S_TEXT/ASS
    Codec ID/Info                            : Advanced Sub Station Alpha
    Duration                                : 24 min 19 s
    Bit rate                                : 8 621 b/s
    Frame rate                              : 3.074 FPS
    Count of elements                        : 4488
    Compression mode                        : Lossless
    Stream size                              : 1.50 MiB (0%)
    Title                                    : English Title
    Language                                : English
    Default                                  : Yes
    Forced                                  : No

    Text #2
    ID                                      : 4
    Format                                  : ASS
    Codec ID                                : S_TEXT/ASS
    Codec ID/Info                            : Advanced Sub Station Alpha
    Duration                                : 23 min 9 s
    Bit rate                                : 169 b/s
    Frame rate                              : 0.293 FPS
    Count of elements                        : 407
    Compression mode                        : Lossless
    Stream size                              : 28.8 KiB (0%)
    Title                                    : English Two
    Language                                : English
    Default                                  : No
    Forced                                  : No

    Menu
    00:00:00.000                            : ja:Intro

    Log snippet:
    Code:
    "Allow transcoding" checked:
    [INF] [34] Microsoft.AspNetCore.Hosting.Diagnostics: Request starting "HTTP/1.1" "GET" "https"://"127.0.0.1:8920""""/jellyfin/videos/c269f708-380a-012c-235c-10636a7db0ea/master.m3u8""?DeviceId=TW96aWxsDL12qRAgKFdlYjBTOyBMaW51eC9TbWFydFRWKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA4LjAuNTM1OS4yMTEgU2FmYXJpLzUzNy4zNiBXZWJBcHBNYW5hZ2VyfDE3NDAyMDU3MjE0OTY1&MediaSourceId=c268f708380a052c235c10636a7db0ea&VideoCodec=hevc,h264&AudioCodec=flac&AudioStreamIndex=2&VideoBitrate=138654048&AudioBitrate=1345952&AudioSampleRate=48000&MaxFramerate=23.976025&PlaySessionId=230712943a18492a92fcddd61223bb09&api_key=key&TranscodingMaxAudioChannels=6&RequireAvc=false&EnableAudioVbrEncoding=true&Tag=02f5e8aafe6bf9b3929b57f77bbb1284&SegmentContainer=mp4&SegmentLength=1&MinSegments=1&BreakOnNonKeyFrames=False&h264-level=41&h264-videobitdepth=8&h264-profile=high&h264-audiochannels=2&hevc-profile=main,main10&hevc-rangetype=SDR,HDR10,HLG,DOVI,DOVIWithHDR10,DOVIWithHLG,DOVIWithSDR&hevc-level=183&h264-rangetype=SDR&flac-audiochannels=2&TranscodeReasons=DirectPlayError&allowVideoStreamCopy=false" - null null
    [INF] [34] Microsoft.AspNetCore.Routing.EndpointMiddleware: Executing endpoint '"Jellyfin.Api.Controllers.DynamicHlsController.GetMasterHlsVideoPlaylist (Jellyfin.Api)"'

    "Allow transcoding" unchecked:
    [INF] [73] Microsoft.AspNetCore.Mvc.Infrastructure.PhysicalFileResultExecutor: Executing "PhysicalFileResult", sending file '"/data/Media/file.mkv"' with download name '""' ...


    Technical info:

    [*]The version of Jellyfin server: 10.10.6
    Installation method and platform: Ubuntu 24.04 apt stable
    Client: 10.11.0 (f8df5da81-dirty) WebOS 23.20.44 (LG C4)

    [*]Also, I attached images of the tech stats I see when trying to play the videos in question. Interestingly, the "audio" for Video #1 changes its title when direct playing, despite supposely direct playing the audio in either scenario.


    Attached Files Thumbnail(s)
               
    thxcloudsfer
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Feb
    Reputation: 0
    Country:United States
    #2
    2025-02-26, 05:46 AM (This post was last modified: 2025-02-26, 06:50 AM by thxcloudsfer. Edited 2 times in total.)
    I've just come to realize there is a semantic difference between "direct play" and "direct stream"... Seems as though the audio is the culprit here? I'm confused why Jellyfin would try and transcode the whole thing instead of just the audio by default if that is the case.

    Edit: thought might be related to https://github.com/jellyfin/jellyfin-webos/issues/105 but the suggested solutions there didn't work for me.

    More relevant logs:
    Code:
    :57.185 ] [DBG] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 384000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: "vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,mpeg2video,vc1,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mkv", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,mpeg2video,vc1,vp9,av1", Type: Video }, DirectPlayProfile { Container: "m2ts", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,vc1,mpeg2video", Type: Video }, DirectPlayProfile { Container: "wmv", AudioCodec: "", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "ts,mpegts", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,vc1,mpeg2video", Type: Video }, DirectPlayProfile { Container: "asf", AudioCodec: "", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "avi", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mpg", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mpeg", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mov", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264", Type: Video }, DirectPlayProfile { Container: "opus", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "opus", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ts", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webma", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "webma", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "hls", AudioCodec: "aac,ac3,eac3,mp2,opus,flac", VideoCodec: "hevc,h264", Type: Video }, DirectPlayProfile { Container: "hls", AudioCodec: "aac,mp3,ac3,eac3,mp2", VideoCodec: "h264,hevc", Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "mp4", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: "", AudioCodec: "mp3", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "opus", Type: Audio, VideoCodec: "", AudioCodec: "opus", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: "", AudioCodec: "wav", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "opus", Type: Audio, VideoCodec: "", AudioCodec: "opus", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: "", AudioCodec: "mp3", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: "", AudioCodec: "wav", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "hevc,h264", AudioCodec: "aac,ac3,eac3,mp2,opus", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,hevc", AudioCodec: "aac,mp3,ac3,eac3,mp2", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "hevc,h264", AudioCodec: "flac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: AudioChannels, Value: "2", IsRequired: False }], ApplyConditions: [], Codec: "flac", Container: null, SubContainer: null }, 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: EqualsAny, Property: VideoRangeType, Value: "SDR", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "52", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: "-mp4,ts", SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "main|main 10", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG|DOVI|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "183", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }], ApplyConditions: [], Codec: "vp9", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "main", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "19", IsRequired: False }], ApplyConditions: [], Codec: "av1", Container: null, SubContainer: null }], 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 }] }
    :57.229 ] [INF] User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    :57.233 ] [DBG] Profile: "Unknown Profile", Path: "/data/Media/file.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
    :57.249 ] [DBG] DirectPlay Result for Profile: "Anonymous Profile", Path: "/data/Media/file.mkv", PlayMethod: DirectPlay, AudioStreamIndex: 2, SubtitleStreamIndex: 4, Reasons: 0
    :57.252 ] [DBG] StreamBuilder.BuildVideoItem( Profile="Anonymous Profile", Path="/data/Media/file.mkv", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=DirectPlay, TranscodeReason=0 ) "media:/videos/c268f708-380a-052c-235c-10636a7db0ea/stream.mkv?MediaSourceId=c268f708380a052c235c10636a7db0ea&Static=true&VideoCodec=h264&AudioCodec=flac&AudioStreamIndex=2&api_key=<token>&Tag=02f5e8aafe6bf9b3929b57f77bbb1284"
    :57.718 ] [DBG] Playback progressed
    :57.732 ] [WRN] Received playback progress from user "user" but initial state was never set - setting it now!
    :57.738 ] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
    :57.738 ] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
    :57.739 ] [DBG] Playback started
    :57.739 ] [DBG] User "user" started watching item "/data/Media/file.mkv".
    :57.740 ] [DBG] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 384000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: "vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mp4,m4v", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,mpeg2video,vc1,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mkv", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,mpeg2video,vc1,vp9,av1", Type: Video }, DirectPlayProfile { Container: "m2ts", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,vc1,mpeg2video", Type: Video }, DirectPlayProfile { Container: "wmv", AudioCodec: "", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "ts,mpegts", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264,hevc,vc1,mpeg2video", Type: Video }, DirectPlayProfile { Container: "asf", AudioCodec: "", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "avi", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mpg", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mpeg", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "", Type: Video }, DirectPlayProfile { Container: "mov", AudioCodec: "aac,mp3,ac3,eac3,mp2,pcm_s16le,pcm_s24le,opus,flac,vorbis", VideoCodec: "h264", Type: Video }, DirectPlayProfile { Container: "opus", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "opus", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ts", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webma", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "webma", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "hls", AudioCodec: "aac,ac3,eac3,mp2,opus,flac", VideoCodec: "hevc,h264", Type: Video }, DirectPlayProfile { Container: "hls", AudioCodec: "aac,mp3,ac3,eac3,mp2", VideoCodec: "h264,hevc", Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "mp4", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: "", AudioCodec: "mp3", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "opus", Type: Audio, VideoCodec: "", AudioCodec: "opus", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: "", AudioCodec: "wav", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "opus", Type: Audio, VideoCodec: "", AudioCodec: "opus", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: "", AudioCodec: "mp3", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "wav", Type: Audio, VideoCodec: "", AudioCodec: "wav", Protocol: http, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "hevc,h264", AudioCodec: "aac,ac3,eac3,mp2,opus", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,hevc", AudioCodec: "aac,mp3,ac3,eac3,mp2", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "hevc,h264", AudioCodec: "flac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 1, SegmentLength: 1, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: AudioChannels, Value: "2", IsRequired: False }], ApplyConditions: [], Codec: "flac", Container: null, SubContainer: null }, 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: EqualsAny, Property: VideoRangeType, Value: "SDR", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "52", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: "-mp4,ts", SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "main|main 10", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG|DOVI|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "183", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }], ApplyConditions: [], Codec: "vp9", Container: null, SubContainer: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "main", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoRangeType, Value: "SDR|HDR10|HLG", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "19", IsRequired: False }], ApplyConditions: [], Codec: "av1", Container: null, SubContainer: null }], 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 }] }
    :57.743 ] [INF] User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    :57.743 ] [DBG] Profile: "Unknown Profile", Path: "/data/Media/file.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: False
    :57.746 ] [DBG] DirectPlay Result for Profile: "Anonymous Profile", Path: "/data/Media/file.mkv", PlayMethod: null, AudioStreamIndex: 2, SubtitleStreamIndex: 4, Reasons: DirectPlayError
    :57.761 ] [DBG] Transcode Result for Profile: "Anonymous Profile", Path: "/data/Media/file.mkv", PlayMethod: Transcode, AudioStreamIndex: 2, SubtitleStreamIndex: 4, Reasons: DirectPlayError
    :57.761 ] [DBG] StreamBuilder.BuildVideoItem( Profile="Anonymous Profile", Path="/data/Media/file.mkv", AudioStreamIndex=2, SubtitleStreamIndex=4 ) => ( PlayMethod=Transcode, TranscodeReason=DirectPlayError ) "media:/videos/c268f708-380a-052c-235c-10636a7db0ea/master.m3u8?MediaSourceId=c268f708380a052c235c10636a7db0ea&VideoCodec=hevc,h264&AudioCodec=flac&AudioStreamIndex=2&VideoBitrate=138654048&AudioBitrate=1345952&AudioSampleRate=48000&MaxFramerate=23.976025&api_key=<token>&TranscodingMaxAudioChannels=6&RequireAvc=false&EnableAudioVbrEncoding=true&Tag=02f5e8aafe6bf9b3929b57f77bbb1284&SegmentContainer=mp4&SegmentLength=1&MinSegments=1&BreakOnNonKeyFrames=False&h264-level=41&h264-videobitdepth=8&h264-profile=high&h264-audiochannels=2&hevc-profile=main,main10&hevc-rangetype=SDR,HDR10,HLG,DOVI,DOVIWithHDR10,DOVIWithHLG,DOVIWithSDR&hevc-level=183&h264-rangetype=SDR&flac-audiochannels=2&TranscodeReasons=DirectPlayError"
    :58.691 ] [DBG] Starting transcoding because fmp4 init file is being requested
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #3
    2025-02-26, 01:56 PM
    I'm wondering if it's because the audio you want to play is the second audio track. Some clients, when playing MKVs, will need a remux if you select an audio track other than the first audio track. Which is the usual behavior for browsers. And WebOS is a glorified browser, including our app.

    In the "problem" video, the FLAC track you are playing is the second track.

    For testing, can you try remuxing the problem video so that the FLAC track is the first track? The command below should remux (no encoding) so that the second audio track becomes the first track, and copies the rest of the streams.

    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -fflags +genpts+igndts -i "/data/Media/Video#1.mkv" -map_metadata 0 -map_chapters 0 -map 0:v -map 0:a:1 -map 0:a:0 -map 0:a:2 -map 0:s -map 0:t -codec copy -max_muxing_queue_size 2048 -max_interleave_delta 0 -avoid_negative_ts disabled newFile.mkv
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    thxcloudsfer
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Feb
    Reputation: 0
    Country:United States
    #4
    2025-02-27, 02:05 AM
    (2025-02-26, 01:56 PM)TheDreadPirate Wrote: I'm wondering if it's because the audio you want to play is the second audio track.  Some clients, when playing MKVs, will need a remux if you select an audio track other than the first audio track.  Which is the usual behavior for browsers.  And WebOS is a glorified browser, including our app.

    In the "problem" video, the FLAC track you are playing is the second track.

    For testing, can you try remuxing the problem video so that the FLAC track is the first track?  The command below should remux (no encoding) so that the second audio track becomes the first track, and copies the rest of the streams.

    Code:
    /usr/lib/jellyfin-ffmpeg/ffmpeg -fflags +genpts+igndts -i "/data/Media/Video#1.mkv" -map_metadata 0 -map_chapters 0 -map 0:v -map 0:a:1 -map 0:a:0 -map 0:a:2 -map 0:s -map 0:t -codec copy -max_muxing_queue_size 2048 -max_interleave_delta 0 -avoid_negative_ts disabled newFile.mkv

    Thanks for the reply. Unfortunately, I just tested this remux, and it seems like the issue persists. FLAC was defaulted and subtitles were off at the beginning of playback. This issue seems quite sinister... Do you have any insight into the meaning of "Unknown Profile" vs "Anonymous Profile" as reported in the debug logs? The only simple solution I can think of is that there just isn't a profile for this video/audio/subs combination, or is that just for Direct Play?


    Attached Files Thumbnail(s)
       
    thxcloudsfer
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2025 Feb
    Reputation: 0
    Country:United States
    #5
    2025-02-27, 07:30 AM
    Well, I've made the horrible mistake of choosing to go down this rabbit hole, but I have new findings that might end up turning this into a pull request (if the root cause can actually be found). I just need a bit of help! I was able to get the WebOS client play my problem videos as a Remux (not even falling back to direct stream!) by forcing direct stream and allow video stream copy to true in the web client. Add the following lines to here to replicate:

    Code:
    query.EnableDirectStream = true;
    query.AllowVideoStreamCopy = true;

    I don't fully understand the implications of making this request, for example, if a video truly cannot direct stream, how the backend handles choosing the best alternative, or if it just fails.

    This is what I've gathered so far:
    1. For reasons I don't understand, the direct play fails with a "DirectPlayError" reason. From my research, this only happens when there's a bug in Jellyfin OR the browser advertises a codec in its profile that it doesn't actually support. This triggers the error handler, which has an initial value for EnableDirectStream and AllowVideoStreamCopy. These two are both set to the result of "isRemoteSource && !isAlreadyFallbacking". I'm guessing that at this stage, the result is FALSE, and my logs confirmed that. A change stream call is made.
    2. changeStream calls getPlaybackInfo, nothing weird here.
    3. In getPlaybackInfo, another way for the EnableDirectStream to be false. Request is kicked off to backend.
    4. The POST handler calls SetDeviceSpecificData.
    5. This is the section of code that makes me think options.EnableDirectStream is never actually used (and I don't see it used in the generation of the client video URL)...
    Code:
            if (!options.ForceDirectStream)
            {
                // direct-stream http streaming is currently broken
                options.EnableDirectStream = false;
            }
    First of all, direct streaming via http seems to work, what do they even mean? And secondly, ForceDirectStream is never populated by the backend OR jellyfin-web, so in EVERY case, EnableDirectStream is false (hence why I think the variable is unused).
    6. Another interesting one in the same function. A "mediaSource" directstream boolean is separately set (presumably) to false due to the options variable being false. But...
    7. Just a bit later, there's a check to append "allowVideoStreamCopy=false". Normally this would take place, but the earlier forced value allowVideoStreamCopy being TRUE makes this not take place.
    8. The client takes in this slightly modified URL (now without the "allowVideoStreamCopy=false" ) and makes a request to get the best video feed. Because copying is now allowed, the best transcode profile is a copy.
    9. Finally, a call to TryStreamCopy. Miraculously, CanStreamCopyVideo returns true. And somehow, and this is the part I *really* don't understand, I get a remux that seems to just be two direct streams. WHAT?

    Here is the command that was given to remux with ffmpeg:

    Code:
    {"Protocol":0,"Id":"1234","Path":"/data/Media/file.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv","Size":7404401956,"Name":"Title","IsRemote":false,"ETag":"1234","RunTimeTicks":14411099999,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"UseMostCompatibleTranscodingProfile":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":1,"VideoRangeType":1,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"1080p H264 SDR","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"ChannelLayout":null,"BitRate":41103882,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"IsHearingImpaired":false,"Height":1080,"Width":1920,"AverageFrameRate":23.976025,"RealFrameRate":23.976025,"ReferenceFrameRate":23.976025,"Profile":"High","Type":1,"AspectRatio":"16:9","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":false},{"Codec":"pcm_s24le","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"Commentary","VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":"Default","LocalizedForced":null,"LocalizedExternal":"External","LocalizedHearingImpaired":null,"DisplayTitle":"Commentary","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":null,"BitRate":2304000,"BitDepth":24,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"ReferenceFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"flac","CodecTag":null,"Language":"jpn","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"Japanese / FLAC / 2.0 / 48 kHz / 1346 kbps","VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":"Default","LocalizedForced":null,"LocalizedExternal":"External","LocalizedHearingImpaired":null,"DisplayTitle":"Japanese / FLAC / 2.0 / 48 kHz / 1346 kbps","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":"stereo","BitRate":1345952,"BitDepth":24,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":true,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"ReferenceFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"eac3","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"English / E-AC-3 / 2.0 / 48 kHz / 224 kbps","VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":"Default","LocalizedForced":null,"LocalizedExternal":"External","LocalizedHearingImpaired":null,"DisplayTitle":"English / E-AC-3 / 2.0 / 48 kHz / 224 kbps","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":"stereo","BitRate":224000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"ReferenceFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":3,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"ass","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"English / Forced / ASS","VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","LocalizedHearingImpaired":"Hearing Impaired","DisplayTitle":"English / Forced / ASS","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":true,"IsHearingImpaired":false,"Height":0,"Width":0,"AverageFrameRate":null,"RealFrameRate":null,"ReferenceFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":4,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"ass","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"English / Full / ASS","VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","LocalizedHearingImpaired":"Hearing Impaired","DisplayTitle":"English / Full / ASS","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"IsHearingImpaired":false,"Height":0,"Width":0,"AverageFrameRate":null,"RealFrameRate":null,"ReferenceFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":5,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"mjpeg","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":"bt470bg","ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Rotation":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":null,"NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":null,"BitRate":null,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"IsHearingImpaired":false,"Height":566,"Width":400,"AverageFrameRate":null,"RealFrameRate":90000,"ReferenceFrameRate":90000,"Profile":"Progressive","Type":3,"AspectRatio":"200:283","Index":6,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuvj444p","Level":-99,"IsAnamorphic":false}],"MediaAttachments":[],"Formats":[],"Bitrate":44977834,"FallbackMaxStreamingBitrate":null,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":0,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null,"HasSegments":false}

    /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -fflags +genpts -f matroska  -i file:"/data/Media/Video#1.mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:2 -map -0:s -codec:v:0 copy -bsf:v h264_mp4toannexb -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 1 -hls_segment_type fmp4 -hls_fmp4_init_filename "da62577decc74f6260d474e077693870-1.mp4" -start_number 0 -hls_segment_filename "/var/cache/jellyfin/transcodes/da62577decc74f6260d474e077693870%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/var/cache/jellyfin/transcodes/da62577decc74f6260d474e077693870.m3u8"


    Attached Files Thumbnail(s)
       
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode