How to Play HEVC Movies in Chrome Without Transcoding
HEVC playback support for Chromium-based browsers (Chrome, Edge) has been added in Plex Web 4.94.2.
With more media files using the HEVC/H.265 video format, more media players are also supporting this format. Most, if not all, 4K movie files are encoded in HEVC.
Recently, Google's Chrome browser has supported playing HEVC media files directly, so no additional media player is needed. The issue is that Plex Media Server will still cause HEVC media to transcode when those files are streamed from Plex
There is a fix for causing Plex to transcode HEVC files when played through Chrome, which I will explain below.
Custom user client profiles
Plex uses client profiles to determine what media formats are supported by a client. The default client profiles are located in a Resources directory in the Plex installation directory. These profiles can be added or updated during an install, so it isn't recommended to change these files.
If you need to add or change a client profile, the recommended way is to add the profile to the Plex data directory. All files in this directory are not changed when Plex is updated.
The full path to the directory where you can add custom user profiles is:
[Plex data directory]/Profiles
By default, this folder doesn't exist, so you will need to create it. Any profiles you create in this folder can be used to override the default profiles in the Plex installation directory.
With that in mind, to have Plex direct stream HEVC media files to Chrome, you will need to create a custom user profile for Chrome that Plex will then use instead of its default profile.
The next section will outline the steps you can take to create a new custom Chrome profile for Plex
Creating a Chrome custom user profile
As mentioned above, we will be creating a new custom Chrome profile that Plex will use to determine what codecs are supported by Chrome. Use the following steps to create a new profile.
- Create a new file called Chrome.xml in the Profiles directory within the Plex data directory.
- Copy the following XML into the Chrome.xml file:
<?xml version="1.0" encoding="utf-8"?> <Client name="Chrome"> <!-- Author: Plexopedia.com --> <TranscodeTargets> <VideoProfile protocol="hls" container="mpegts" codec="hevc,h264" audioCodec="aac,mp3" context="streaming" /> <VideoProfile protocol="dash" container="mp4" codec="hevc,h264" audioCodec="aac" context="streaming"> <Setting name="ForceTranscodesForLive" value="true" /> <Setting name="SkipAudioBeforeStart" value="true" /> </VideoProfile> <VideoProfile protocol="http" container="mkv" codec="hevc,h264" audioCodec="aac,mp3" context="streaming" /> <MusicProfile container="mp3" codec="mp3" /> <PhotoProfile container="jpeg" /> <SubtitleProfile container="ass" codec="ass" context="all" /> </TranscodeTargets> <CodecProfiles> <VideoCodec name="*"> <Limitations> <UpperBound name="video.bitDepth" value="8" /> </Limitations> </VideoCodec> <VideoAudioCodec name="*"> <Limitations> <UpperBound name="audio.channels" value="6" /> </Limitations> </VideoAudioCodec> </CodecProfiles> <!-- When transcoding a multi-channel audio stream inside a video transcode, downmix the audio stream to stereo. --> <TranscodeTargetProfiles> <VideoTranscodeTarget protocol="*" context="streaming"> <VideoAudioCodec name="*"> <Limitations> <UpperBound name="audio.channels" value="2" onlyTranscodes="true" /> </Limitations> </VideoAudioCodec> </VideoTranscodeTarget> </TranscodeTargetProfiles> </Client>
- Save the file.
- Restart Plex Media Server so the new profile can be used by Plex.
After Plex Media Server has restarted, play an HEVC-encoded media file in Plex and you should notice that it will no longer transcode when playing in a Chrome browser.