Native support for H265 files on Xbox One

Issue #1032 resolved
Petr Nejedly repo owner created an issue

It has some support.

  • Can play HD files (mp4/h264/aac/mp3) natively
  • Cannot play 4k HDR 60fps remuxed file
  • need to find some h265 files in HD only to see if remux is possible
  • maybe some of these need the S/X xboxes (4k, HDR)

Comments (6)

  1. patters

    I can confirm that my Xbox One S plays HEVC both 8bit and 10bit, and can usually play 2160p content (though I only have a 1080p TV). The remux to mpegts seems to work fine. There does seem to be a max bit rate it can cope with. Some of my files choke whereas others don't, even on a wired 1Gbps connection.

    Maybe there should be a separate profile for Xbox One S/X models which will probably have to be manually selected if these consoles have identical ID strings. This would save having to edit profiles.xml manually for HEVC playback.

  2. Petr Nejedly reporter

    @patters any chance you could come up with a S/X profile?

    I only have the original One.

    Ie if you remove the h264 transcoding from the profile and leave the remux on h265 in, can you play pretty much everything?

  3. Petr Nejedly reporter

    I've updated the X1 profile to transcode h265 more than HD and remux h264 for unsupported audio

  4. patters

    How about this attempt.

    Unfortunately the Xbox One Media Player app presents the same ModelName regardless of host console version. So I think the config below should auto-detect the basic Xbox One model in all cases. Then the Serviio user will need to manually select the "Xbox One S/Xbox One X" profile manually for better HEVC support.

    The basic model inherited HEVC playback during a software update though Microsoft never updated the Media Format Support documentation to list HEVC. It was mainly provided so that apps like NetFlix could use the feature via an API. Can you check you can play a normal HEVC 720p or 1080p TV programme on the regular Xbox One? Can it manage 10bit? These all play fine on Xbox One S.

    The Xbox One S/Xbox One X profile plays HEVC at 4K resolutions, whereas the regular Xbox One is limited to 1080p.

    <Profile id="xbox_one_s_x" name="Xbox One S/Xbox One X" extendsProfileId="1">
        <Transcoding>
            <!-- All Xbox One consoles gained HEVC decoding support via a software update in May 2015 -->
            <!-- https://support.xbox.com/en-GB/xbox-one/console/system-update-operating-system-2015#779ee9a98b77406398de190e937a72f8 -->
            <!-- As with older Intel CPUs the base Xbox One model is likely using partial hardware decoding, and is likely limited to 1080p -->
            <!-- The Xbox One S has an updated APU design with hardware decoder for up to 10bit HEVC @ 2160p -->
            <!-- https://www.eurogamer.net/articles/digitalfoundry-2016-inside-xbox-one-s-tech-interview -->
            <!-- The Xbox One X also supports 10bit HEVC @ 2160p -->
            <Video targetContainer="mpegts" targetACodec="ac3" forceInheritance="true">
                <Matches container="*" vCodec="h264" aCodec="dca" />
                <Matches container="*" vCodec="h264" aCodec="dts-hd" />
                <Matches container="*" vCodec="h264" aCodec="vorbis" />
                <Matches container="*" vCodec="h264" aCodec="truehd" />
                <Matches container="*" vCodec="h264" aCodec="flac" />
                <Matches container="*" vCodec="h265" aCodec="dca" />
                <Matches container="*" vCodec="h265" aCodec="dts-hd" />
                <Matches container="*" vCodec="h265" aCodec="vorbis" />
                <Matches container="*" vCodec="h265" aCodec="truehd" />
                <Matches container="*" vCodec="h265" aCodec="flac" />
                <Matches container="*" vCodec="h265" aCodec="opus" />
                <Matches container="3gp" vCodec="mpeg4" aCodec="amrnb" />
                <Matches container="flv" vCodec="h264" />
            </Video>
            <Video targetContainer="mpegts" forceInheritance="true">
                <Matches container="matroska" vCodec="vc1" />
                <Matches container="wtv" />
            </Video>
            <Video targetContainer="mpegts" targetVCodec="mpeg2video" targetACodec="ac3" forceInheritance="true">
                <!-- Matches container="3gp" vCodec="h263" /-->
                <Matches container="flv" />
                <Matches container="ogg" />
                <Matches container="rm" />
                <!-- WebM -->
                <Matches container="matroska" vCodec="vp9" />
            </Video>
            <Video targetContainer="mpegts" targetVCodec="mpeg2video" targetACodec="ac3" forceVTranscoding="true" forceInheritance="true">
                <Matches container="asf" vCodec="mpeg2video" />
                <Matches container="asf" vCodec="mpeg1video" />
            </Video>
            <Audio targetContainer="lpcm" forceInheritance="true">
                <!--Matches container="adts" /-->
                <Matches container="ape" />
                <Matches container="flac" />
                <Matches container="flv" />
                <Matches container="mpc" />
                <Matches container="ogg" />
                <Matches container="wv" />
                <Matches container="dsf" />
                <Matches container="asf" codec="wmalossless" />
                <Matches container="mp4" codec="alac" />
            </Audio>
        </Transcoding>
        <AudioTrackRemux>
            <Video targetContainer="mpegts" targetACodec="ac3" forceInheritance="true">
                <Matches container="*" vCodec="h264" />
                <Matches container="*" vCodec="mpeg2video" />
                <Matches container="*" vCodec="mpeg1video" />
                <Matches container="*" vCodec="mpeg4" />
                <Matches container="*" vCodec="msmpeg4" />
            </Video>
        </AudioTrackRemux>
        <GenericTranscoding>
            <Video targetContainer="mpegts" targetVCodec="mpeg2video" targetACodec="ac3" />
        </GenericTranscoding>
        <ThumbnailsResolution>HD</ThumbnailsResolution>
        <LimitImageResolution>false</LimitImageResolution>
        <MultipleAudioTrackAware>false</MultipleAudioTrackAware>
    </Profile>
    
    
    
    <Profile id="xbox_one" name="Xbox One" extendsProfileId="xbox_one_s_x">
        <Detection>
            <UPnPSearch>
                <ModelName>Xbox One</ModelName>
            </UPnPSearch>
        </Detection>
        <Transcoding>
            <Video targetContainer="mpegts" targetVCodec="mpeg2video" targetACodec="ac3" aBitrate="384" maxWidth="1920" maxHeight="1080">
                <Matches container="*" vCodec="h265" widthGreaterThan="1920" heightGreaterThan="1080" />
            </Video>
        </Transcoding>
    </Profile>
    
  5. Log in to comment