HEVC and iOS11

Question re the newest version of the iOS client - it states it now has builtin support for HEVC videos, but I am unable to get this to work. Posted this as a comment in the open forum but no reply there. Essentially, I have checked the 4cc code, made sure I have compatible audio streams (using AC3), and am using what I believe to be an adequately powered device - an iPad Pro and an iPhone 8. My server software elects to automatically transcode.

I’m running Plex on a ReadyNas from netgear, the 212 (recommended NAS). Would this make a difference? I have added H265 as a profile to iOS.xml on the server in the hope this would make a difference.

Has anyone successfully played HEVC on an iPad?

Yes, HEVC does work, even 10-bit 4K files. The only thing I needed to do was update the iOS.xml profile and make sure the media is tagged as “hvc1”.

There are plenty of examples in the iOS and Apple TV forums for how to do it.

Here is my current iOS.xml file:

<?xml version="1.0" encoding="utf-8"?>
<Client name="iOS">
  <!-- Customized version of the iOS.xml file to allow for HEVC and 4K content -->
  <Settings>
    <Setting name="DirectPlayStreamSelection" value="true" />
    <Setting name="StreamUnselectedIncompatibleAudioStreams" value="true" />
  </Settings>
  <TranscodeTargets>
    <VideoProfile container="mp4" codec="h264" audioCodec="aac" subtitleCodec="mov_text" context="static" />
    <VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,mp3" context="streaming">
      <Setting name="HlsExtraMultiChannelAudioStream" value="ac3" />
    </VideoProfile>
    <MusicProfile container="mp3" codec="mp3" />
    <PhotoProfile container="jpeg" />
    <SubtitleProfile protocol="hls" container="webvtt" subtitleCodec="webvtt"/>
  </TranscodeTargets>
  <DirectPlayProfiles>
    <VideoProfile container="mp4,m4v" codec="hevc,h265,h264,mpeg4" audioCodec="aac,he-aac,ac3,eac3,flac" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <!-- Since tvOS may have issues direct playing mov/*/eac3 it has its own profile  -->
    <VideoProfile container="mov" codec="hevc,h265,h264,mpeg4" audioCodec="aac,he-aac,ac3,flac" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <!-- Allow Direct Play of HLS content  -->
    <VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,he-aac,ac3,eac3,flac" />
    <MusicProfile container="mp3" codec="mp3" />
    <MusicProfile container="mp4" codec="aac,he-aac,ac3,eac3,flac" />
    <PhotoProfile container="jpeg" />
  </DirectPlayProfiles>
  <CodecProfiles>
    <VideoCodec name="*">
      <Limitations>
        <UpperBound name="video.width" value="3840" />
        <UpperBound name="video.height" value="2160" />
        <UpperBound name="video.bitDepth" value="10" />
      </Limitations>
    </VideoCodec>
    <VideoAudioCodec name="*">
      <Limitations>
        <UpperBound name="audio.channels" value="8" />
      </Limitations>
    </VideoAudioCodec>
  </CodecProfiles>
</Client>

Thanks for the reply. I’ve similarly altered iOS.xml as mentioned with no effect. I even just cloned your iOS.xml (thank you for supplying a slightly different example from the one I had modified), the following is a screengrab from plex server:

As you can see, it’s still transcoding h264 from HEVC.

The FourCC code of the relevant file (a x265 code film) is hvc1, which i have confirmed by running it through ffmpeg to ensure that it’s the correct code. Can be seen here (file metadata):

At present, it’s a non-function for me and a bit of an irritant. Any other thoughts?

DirectPlay is of course turned on in the app preferences. It’s only the HEVC encode that is causing this difficulty.

The QT text is chapter markings, incidentally.

The other thing I ran into on my wife’s iPad – in the Plex client I had to go into Settings -> Quality, and set Home streaming to “Maximum”.

Does the “Plex Media Server.log” give any indication as to why it is transcoding? Enable Verbose and/or debug logs for the server, try to play the file, and then download the logs. Look in the “Plex Media Server.log” for any line that has MDE: in it. That line, or the lines around it, should tell you why the server is transcoding.

Thanks kclimie - turns out it was the setting to Maximum quality. 20MBPs apparently wasn’t enough - great pickup. Set that to maximum and then… boom. Streams.

Thanks again!