• 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 General Questions VP9 on Android Exoplayer transcoding

    Pages (2): 1 2 Next »

     
    • 0 Vote(s) - 0 Average

    VP9 on Android Exoplayer transcoding

    VP9 not supported on Exoplayer on my Samsung
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #1
    2024-03-11, 07:56 PM (This post was last modified: 2024-03-11, 08:18 PM by TheDreadPirate. Edited 2 times in total.)
    Hi all,

    I'm really loving jellyfin. I use it on my Android TV on my NVIDIA Shield without problems.

    I've got a little script that [media sourcing discussions not allowed - TDP], which are in VP9 format.

    This plays on my TV without concern. (With Exoplayer as the player)

    On my phone I use Exoplayer as I have a lot of H265 media. But for some reason VP9 is reported as not being supported.

    This happens with all vp9s, even SD, low bitrate, normal frame rate ones.

    Anyway, surely Exoplayer can play VP9 format? But why does the android phone app report it as not supported?


    Log for details:

    User policy EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
     [INF] StreamBuilder.BuildVideoItem( Profile="Jellyfin Android", Path="/home/Videos/vp9_video.mp4", AudioStreamIndex=1, SubtitleStreamIndex=-1 ) => ( PlayMethod=Transcode, TranscodeReason=VideoCodecNotSupported ) "mediaConfused-facevideos/34827e67-e677-dc32-606d-384a38a96379/master.m3u8?MediaSourceId=34827e67e677dc32606d384a38a96379&VideoCodec=h264&AudioCodec=aac&AudioStreamIndex=1&VideoBitrate=119872001&AudioBitrate=127999&AudioSampleRate=44100&MaxFramerate=60.001877&api_key=<token>&SubtitleMethod=Encode&RequireAvc=false&Tag=1a84048a2d34de3240b5bf4f45893860&SegmentContainer=ts&BreakOnNonKeyFrames=False&vp9-level=-99&vp9-videobitdepth=8&vp9-profile=profile0&vp9-audiochannels=2&aac-profile=lc&TranscodeReasons=VideoCodecNotSupported"
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #2
    2024-03-11, 08:05 PM (This post was last modified: 2024-03-11, 08:05 PM by TheDreadPirate.)
    What phone do you have? Exo supports VP9 but, perhaps, your phone SOC does not.
    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]
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #3
    2024-03-11, 08:14 PM
    It's a Samsung S23 (meant to put it in but couldn't remember the exact model as these phones have been pretty similar over the last few years).

    Also, vp9 works for me on the web player.


    From aida64 (couldn't copy paste more than this)
    video/x-vnd.on2.vp9
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #4
    2024-03-11, 08:25 PM
    On the server, turn on debug logging. When debug logging is on it will log the "device profile" it receives from the client. The device profile will list the codec+container compatibility reported by your phone.

    https://jellyfin.org/docs/general/admini...ug-logging
    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]
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #5
    2024-03-11, 09:24 PM
    I've got this from the transcode log?
    Is that it?

    {"Protocol":0,"Id":"34827e67e677dc32606d384a38a96379","Path":"/home/Videos/vp9example.mp4","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mov,mp4,m4a,3gp,3g2,mj2","Size":232018624,"Name":"vp9example","IsRemote":false,"ETag":"1a84048a2d34de3240b5bf4f45893860","RunTimeTicks":5437190144,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"vp9","CodecTag":"vp09","Language":"und","ColorRange":null,"ColorSpace":"bt709","ColorTransfer":"bt709","ColorPrimaries":"bt709","DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/16000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080p VP9 SDR","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":3274419,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":60.001877,"RealFrameRate":60,"Profile":"Profile 0","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":-99,"IsAnamorphic":null},{"Codec":"aac","CodecTag":"mp4a","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,"Comment":null,"TimeBase":"1/44100","CodecTimeBase":null,"Title":"ISO Media file produced by Google Inc.","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"ISO Media file produced by Google Inc. - English - AAC - Stereo - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":127999,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":44100,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":"LC","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}],"MediaAttachments":[],"Formats":[],"Bitrate":3413801,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #6
    2024-03-11, 09:28 PM
    Negative. That just the info about the file itself. In the device profile, only logged when debug is turned on, it will be a looooooong list of codec+container combinations that the device reports as supported to the server. And it will be written to the main Jellyfin log.
    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]
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #7
    2024-03-12, 04:44 AM
    This must be it.

    GetPostedPlaybackInfo profile: DeviceProfile { Name: "Jellyfin Android", 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: "", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: null, MaxAlbumArtHeight: null, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 384000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4", AudioCodec: "mp3,aac,alac,ac3", VideoCodec: "h263,mpeg4,h264,hevc,av1", Type: Video }, DirectPlayProfile { Container: "mp4", AudioCodec: "mp3,aac,alac,ac3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "fmp4", AudioCodec: "mp3,aac,ac3,eac3", VideoCodec: "h263,mpeg4,h264,hevc,av1", Type: Video }, DirectPlayProfile { Container: "fmp4", AudioCodec: "mp3,aac,ac3,eac3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: "vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mkv", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw,mp3,aac,vorbis,opus,flac,alac,ac3,eac3,dts,mlp,truehd", VideoCodec: "h263,mpeg4,h264,hevc,av1,vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mkv", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw,mp3,aac,vorbis,opus,flac,alac,ac3,eac3,dts,mlp,truehd", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: "vorbis,opus,flac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mpegts", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw,mp3,aac,ac3,eac3,dts,mlp,truehd", VideoCodec: "mpeg4,h264,hevc", Type: Video }, DirectPlayProfile { Container: "mpegts", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw,mp3,aac,ac3,eac3,dts,mlp,truehd", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flv", AudioCodec: "mp3,aac", VideoCodec: "mpeg4,h264", Type: Video }, DirectPlayProfile { Container: "flv", AudioCodec: "mp3,aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: "flac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "3gp", AudioCodec: "3gpp,aac,flac", VideoCodec: "h263,mpeg4,h264,hevc", Type: Video }, DirectPlayProfile { Container: "3gp", AudioCodec: "3gpp,aac,flac", VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "mp1,mp2,mp3,aac,ac3,eac3,dts,mlp,truehd", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "mkv", Type: Video, VideoCodec: "h264", AudioCodec: "pcm_s8,pcm_s16be,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_alaw,pcm_mulaw,mp1,mp2,mp3,aac,vorbis,opus,flac,alac,ac3,eac3,dts,mlp,truehd", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: "", AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [] }], ContainerProfiles: [ContainerProfile { Type: Video, Conditions: [], Container: "mp4" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mp4" }, ContainerProfile { Type: Video, Conditions: [], Container: "fmp4" }, ContainerProfile { Type: Audio, Conditions: [], Container: "fmp4" }, ContainerProfile { Type: Video, Conditions: [], Container: "webm" }, ContainerProfile { Type: Audio, Conditions: [], Container: "webm" }, ContainerProfile { Type: Video, Conditions: [], Container: "mkv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mkv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mp3" }, ContainerProfile { Type: Audio, Conditions: [], Container: "ogg" }, ContainerProfile { Type: Audio, Conditions: [], Container: "wav" }, ContainerProfile { Type: Video, Conditions: [], Container: "mpegts" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mpegts" }, ContainerProfile { Type: Video, Conditions: [], Container: "flv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "flv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "aac" }, ContainerProfile { Type: Audio, Conditions: [], Container: "flac" }, ContainerProfile { Type: Video, Conditions: [], Container: "3gp" }, ContainerProfile { Type: Audio, Conditions: [], Container: "3gp" }], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "dvbsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }] }
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #8
    2024-03-12, 05:14 AM
    It seems that it's the mp4 container that is causing the issue?

    .webm and mkv seem to support vp9. How does that make sense?

    Also, couldn't it then be remuxed rather than transcoded?
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #9
    2024-03-12, 05:18 AM (This post was last modified: 2024-03-12, 05:20 AM by TheDreadPirate. Edited 2 times in total.)
    Code:
    { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: "vp8,vp9,av1"
    { Container: "mkv", AudioCodec: ....VideoCodec: "h263,mpeg4,h264,hevc,av1,vp8,vp9,av1"

    Your VP9 video is in MP4, which is not in the compatibility list. From what I can find, MP4 never officially added VP9 support. Something about a draft proposal from Netflix, but nothing about it being ratified.

    If you remuxed your video into MKV, it would probably direct play. As for why JF doesn't do that for you, Jellyfin currently only transcodes to the TS container. I can't find clear documentation TS supports VP9, which is probably the reason it is transcoded instead.
    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]
    tbjf
    Offline

    Junior Member

    Posts: 9
    Threads: 1
    Joined: 2024 Mar
    Reputation: 0
    #10
    2024-03-12, 05:29 AM
    Thanks for that. I'll try converting them to MKV and reply for anyone who gets this issue in future.

    Thanks very much for your help.

    Would it be feasible for jellyfin to transcode to something other than Transport Stream? Especially for non-TS supported codecs?
    Pages (2): 1 2 Next »

    « 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