Chromecast Ultra profile doesn't support HEVC

jonkv - Let me get back to you on the whole profile. I found another one on the forums I want to tweak and prob going to start from scratch with the original. Currently testing.

What about using ffmpeg? I don’t know how to test that at all :slight_smile:

Transcoding the audio with ffmpeg should be something like:

ffmpeg -i inputfile.mkv -c:v copy -c:a ac3 outputfile.mkv

c:v means codec:video, and setting this to copy means simply copying the encoded video stream as it is. c:a means codec:audio, and AC-3 is Dolby digital. And it should work well with other containers as well (MP4 or whatever). Note that this changes the audio into AC3, but it should also be possible to keep the DTS track.

I just tested this on a file with H.264 video at 13 Mbps plus DTS audio at 1.5 Mbps, and it converted the file at 59x realtime speed using 70% of one core, so it is definitely very different from transcoding video.

Thanks for the response jonkv, but…

I got it! :slight_smile: Just checked my logs:

Jan 12, 2017 16:46:33.299 [2180] DEBUG - Streaming Resource: Reached Decision id=13924 codes=(General=1001,Direct play not available; Conversion OK. Direct Play=3000,App cannot direct play this item. Direct play is disabled. Transcode=1001,Direct play not available; Conversion OK.) media=(id=24738 part=(id=24749 decision=transcode container=matroska protocol=http streams=(Video=(id=58701 decision=copy width=3840 height=2160) Audio=(id=58702 decision=transcode bitrate=768 encoder=aac channels=6 rate=48000))))

Here are the relevant lines… (with the opening < removed so itll post…) I think I had a few issues. I went ahead and added hevc and h265 together (just in case it didnt parse them the same) any time I made an addition. I was also focused on the directplay profile thinking I wanted the stream to directplay… however that was incorrect. Instead I needed to focus on the transcode targets. When I looked at that video profile originally I was thinking it meant it would transcode anything in that list instead of saying these are the codecs the player can process. So I added both h265 and hevc to both transcode and directplay. I also added them to the codec profiles with upperbounds thatll work for all my media. Anyway, looks to be working!!!

TranscodeTargets>
VideoProfile protocol=“http” container=“matroska” codec=“h264,h265,hevc” audioCodec=“eac3,ac3,aac,mp3” context=“streaming”>
/VideoProfile>
MusicProfile container=“matroska” codec=“mp3”/>
PhotoProfile container=“jpeg”/>
/TranscodeTargets>
DirectPlayProfiles>
VideoProfile container=“mp4” codec=“Hevc,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2”/>
VideoProfile container=“mkv” codec=“vp9,hevc,h265,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2,pcm,flac,alac” subtitleFormat=“srt,ass”/>
/DirectPlayProfiles>
CodecProfiles>
VideoCodec name=“h265,hevc,vp9”>
Limitations>
UpperBound name=“video.width” value=“3840”/>
UpperBound name=“video.height” value=“2176”/>
UpperBound name=“video.bitrate” value=“75000”/>
/Limitations>

Now, plex employees, please give me a different chromecast profile for my ultra vs my gen2. Thanks… :slight_smile:

(Edited because I am about to go try this on my Roku Ultra which I am also having a problem with…)

@Clmcm400 said:
Thanks for the response jonkv, but…

I got it! :slight_smile: Just checked my logs:

Jan 12, 2017 16:46:33.299 [2180] DEBUG - Streaming Resource: Reached Decision id=13924 codes=(General=1001,Direct play not available; Conversion OK. Direct Play=3000,App cannot direct play this item. Direct play is disabled. Transcode=1001,Direct play not available; Conversion OK.) media=(id=24738 part=(id=24749 decision=transcode container=matroska protocol=http streams=(Video=(id=58701 decision=copy width=3840 height=2160) Audio=(id=58702 decision=transcode bitrate=768 encoder=aac channels=6 rate=48000))))

Here are the relevant lines… (with the opening < removed so itll post…) I think I had a few issues. I went ahead and added hevc and h265 together (just in case it didnt parse them the same) any time I made an addition. I was also focused on the directplay profile thinking I wanted the stream to directplay… however that was incorrect. Instead I needed to focus on the transcode targets. When I looked at that video profile originally I was thinking it meant it would transcode anything in that list instead of saying these are the codecs the player can process. So I added both h265 and hevc to both transcode and directplay. I also added them to the codec profiles with upperbounds thatll work for all my media. Anyway, looks to be working!!!

TranscodeTargets>
VideoProfile protocol=“http” container=“matroska” codec=“h264,h265,hevc” audioCodec=“eac3,ac3,aac,mp3” context=“streaming”>
/VideoProfile>
MusicProfile container=“matroska” codec=“mp3”/>
PhotoProfile container=“jpeg”/>
/TranscodeTargets>
DirectPlayProfiles>
VideoProfile container=“mp4” codec=“Hevc,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2”/>
VideoProfile container=“mkv” codec=“vp9,hevc,h265,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2,pcm,flac,alac” subtitleFormat=“srt,ass”/>
/DirectPlayProfiles>
CodecProfiles>
VideoCodec name=“h265,hevc,vp9”>
Limitations>
UpperBound name=“video.width” value=“3840”/>
UpperBound name=“video.height” value=“2176”/>
UpperBound name=“video.bitrate” value=“75000”/>
/Limitations>

Now, plex employees, please give me a different chromecast profile for my ultra vs my gen2. Thanks… :slight_smile:

(Edited because I am about to go try this on my Roku Ultra which I am also having a problem with…)

Thanks for this! Good to know someone can figure it out even if the Plex team can’t. That might sound unfair, but Plex have had since at least October to offer support for CCU and we’ve heard nothing. Not even a seperate profile is pretty poor.

I have a CC2 as well, we’ll see if it explodes when I try this profile :wink:

@Clmcm400 said:
Thanks for the response jonkv, but…

I got it! :slight_smile: Just checked my logs:

Jan 12, 2017 16:46:33.299 [2180] DEBUG - Streaming Resource: Reached Decision id=13924 codes=(General=1001,Direct play not available; Conversion OK. Direct Play=3000,App cannot direct play this item. Direct play is disabled. Transcode=1001,Direct play not available; Conversion OK.) media=(id=24738 part=(id=24749 decision=transcode container=matroska protocol=http streams=(Video=(id=58701 decision=copy width=3840 height=2160) Audio=(id=58702 decision=transcode bitrate=768 encoder=aac channels=6 rate=48000))))

Here are the relevant lines… (with the opening < removed so itll post…) I think I had a few issues. I went ahead and added hevc and h265 together (just in case it didnt parse them the same) any time I made an addition. I was also focused on the directplay profile thinking I wanted the stream to directplay… however that was incorrect. Instead I needed to focus on the transcode targets. When I looked at that video profile originally I was thinking it meant it would transcode anything in that list instead of saying these are the codecs the player can process. So I added both h265 and hevc to both transcode and directplay. I also added them to the codec profiles with upperbounds thatll work for all my media. Anyway, looks to be working!!!

TranscodeTargets>
VideoProfile protocol=“http” container=“matroska” codec=“h264,h265,hevc” audioCodec=“eac3,ac3,aac,mp3” context=“streaming”>
/VideoProfile>
MusicProfile container=“matroska” codec=“mp3”/>
PhotoProfile container=“jpeg”/>
/TranscodeTargets>
DirectPlayProfiles>
VideoProfile container=“mp4” codec=“Hevc,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2”/>
VideoProfile container=“mkv” codec=“vp9,hevc,h265,mpeg1video,mpeg2video,h264,mpeg4” audioCodec=“eac3,ac3,aac,mp3,mp2,pcm,flac,alac” subtitleFormat=“srt,ass”/>
/DirectPlayProfiles>
CodecProfiles>
VideoCodec name=“h265,hevc,vp9”>
Limitations>
UpperBound name=“video.width” value=“3840”/>
UpperBound name=“video.height” value=“2176”/>
UpperBound name=“video.bitrate” value=“75000”/>
/Limitations>

Now, plex employees, please give me a different chromecast profile for my ultra vs my gen2. Thanks… :slight_smile:

(Edited because I am about to go try this on my Roku Ultra which I am also having a problem with…)

Awesome, I’m going to try this out and see how it works on the built in casting on my P-55, will post back with results, really hoping to get HEVC sorted for my library!

So I added those lines, now plex shows as “Transcoding” then says Video is Direct Play and Audio is Direct Play. However, nothing plays and it just shows “buffering” continuously on the TV…

@Djcurley said:
So I added those lines, now plex shows as “Transcoding” then says Video is Direct Play and Audio is Direct Play. However, nothing plays and it just shows “buffering” continuously on the TV…

Works for me with CCU. Is P-55 some Vizio TV? Does that use Chromecast.xml? Don’t just add the lines, rather replace the entire Chromecast.xml with this modified code. I took the liberty of formatting the code and attaching a copy.

The whole point is that it shouldn’t say “Transcoding” at all. My Plex server says “Direct Stream”, which I think is correct as the intention is to just repackage the content.

@only1hammy said:

@Djcurley said:
So I added those lines, now plex shows as “Transcoding” then says Video is Direct Play and Audio is Direct Play. However, nothing plays and it just shows “buffering” continuously on the TV…

Works for me with CCU. Is P-55 some Vizio TV? Does that use Chromecast.xml? Don’t just add the lines, rather replace the entire Chromecast.xml with this modified code. I took the liberty of formatting the code and attaching a copy.

The whole point is that it shouldn’t say “Transcoding” at all. My Plex server says “Direct Stream”, which I think is correct as the intention is to just repackage the content.

Yeah, the P-55 is Vizio’s latest line that has Chromecast built in with 4K and HDR support, it definitely supports HEVC as well and has been updated to the latest chromecast version (1.21.75378). I’ll download and replace the Chromecast.xml, it’s definitely using that xml since it changes how things are played through P-55, so hopefully this one will be the magic bullet.

You really want a separate definition for the ChromeU.

Google should have added a header or something advertising the codecs, but you can make media servers detect a ChromeU in addition to a ChromeCast Classic and serve the right video streams to each.

http://www.universalmediaserver.com/forum/viewtopic.php?f=5&t=9130

So, tried using that xml and no dice, same problem as before, it says “Buffering” under “Chromecast”, then Transcoding… actually Transcoding (throttled)… and Direct Stream next to video and audio (I miss spoke earlier when I said “Direct Play” but it actually says Direct Stream), but my NAS is clearly not transcoding as the load does not increase any and the video never starts, just spins the loading/buffering icon forever.

I know the HEVC videos are playable as they can direct play on Plex Media Player on my NAS, the P-55 supports HEVC playback so I’m not sure what the deal is. Here is part of the log after trying to play.

! - [TranscodeOutputStream] Input processing thread started at offset 0 for -1 bytes.
! Jan 15, 2017 14:38:07.871 [0x7f665b959700] VERBOSE - [Chromecast] [MDE] Analyzing direct play
! Jan 15, 2017 14:38:07.894 [0x7f665e911700] WARN - [Chromecast] [MDE] Invalid profile property; level: 120 > 42
! Jan 15, 2017 14:38:07.918 [0x7f665b959700] VERBOSE - [Chromecast] [MDE] Analyzing video direct stream
! Jan 15, 2017 14:38:07.932 [0x7f665bf35700] WARN - [Chromecast] [MDE] Invalid profile property; level: 120 > 42
! Jan 15, 2017 14:38:07.958 [0x7f6663d11700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:07.958 [0x7f665c7ff700] VERBOSE - [Chromecast] [MDE] Analyzing audio direct stream
! Jan 15, 2017 14:38:07.990 [0x7f665ada1700] VERBOSE - [Chromecast] [MDE] Analyzing playability
! Jan 15, 2017 14:38:08.032 [0x7f665e911700] INFO - [Chromecast] [MDE] Finished analysis of 1080 (mkv, hevc, aac, 120, main)
! Jan 15, 2017 14:38:08.058 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.068 [0x7f665b959700] INFO - [Chromecast] canPlay: true
! Jan 15, 2017 14:38:08.100 [0x7f665e911700] INFO - [Chromecast] canDirectPlay: false
! Jan 15, 2017 14:38:08.128 [0x7f665c7ff700] INFO - [Chromecast] canDirectStreamVideo: false
! Jan 15, 2017 14:38:08.148 [0x7f665ada1700] INFO - [Chromecast] canDirectStreamAudio: true
! Jan 15, 2017 14:38:08.158 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.187 [0x7f665c7ff700] INFO - [Chromecast] bitrate: 1187
! Jan 15, 2017 14:38:08.217 [0x7f665ada1700] INFO - [Chromecast] videoResolution: 1080
! Jan 15, 2017 14:38:08.239 [0x7f665b959700] INFO - [Chromecast] [PDE] Player decision
! Jan 15, 2017 14:38:08.258 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.264 [0x7f665e911700] INFO - [Chromecast] Player: html
! Jan 15, 2017 14:38:08.289 [0x7f665b959700] INFO - [Chromecast] Protocol: http
! Jan 15, 2017 14:38:08.313 [0x7f665c7ff700] INFO - [Chromecast] Direct Play: false
! Jan 15, 2017 14:38:08.333 [0x7f665ada1700] INFO - [Chromecast] [Transcoder] Video (start) options
! Jan 15, 2017 14:38:08.354 [0x7f665c7ff700] INFO - [Chromecast] hasMDE: 1
! Jan 15, 2017 14:38:08.358 [0x7f6663d11700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! - [TranscodeOutputStream] Input processing thread started at offset 0 for -1 bytes.
! Jan 15, 2017 14:38:07.871 [0x7f665b959700] VERBOSE - [Chromecast] [MDE] Analyzing direct play
! Jan 15, 2017 14:38:07.894 [0x7f665e911700] WARN - [Chromecast] [MDE] Invalid profile property; level: 120 > 42
! Jan 15, 2017 14:38:07.918 [0x7f665b959700] VERBOSE - [Chromecast] [MDE] Analyzing video direct stream
! Jan 15, 2017 14:38:07.932 [0x7f665bf35700] WARN - [Chromecast] [MDE] Invalid profile property; level: 120 > 42
! Jan 15, 2017 14:38:07.958 [0x7f6663d11700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:07.958 [0x7f665c7ff700] VERBOSE - [Chromecast] [MDE] Analyzing audio direct stream
! Jan 15, 2017 14:38:07.990 [0x7f665ada1700] VERBOSE - [Chromecast] [MDE] Analyzing playability
! Jan 15, 2017 14:38:08.032 [0x7f665e911700] INFO - [Chromecast] [MDE] Finished analysis of 1080 (mkv, hevc, aac, 120, main)
! Jan 15, 2017 14:38:08.058 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.068 [0x7f665b959700] INFO - [Chromecast] canPlay: true
! Jan 15, 2017 14:38:08.100 [0x7f665e911700] INFO - [Chromecast] canDirectPlay: false
! Jan 15, 2017 14:38:08.128 [0x7f665c7ff700] INFO - [Chromecast] canDirectStreamVideo: false
! Jan 15, 2017 14:38:08.148 [0x7f665ada1700] INFO - [Chromecast] canDirectStreamAudio: true
! Jan 15, 2017 14:38:08.158 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.187 [0x7f665c7ff700] INFO - [Chromecast] bitrate: 1187
! Jan 15, 2017 14:38:08.217 [0x7f665ada1700] INFO - [Chromecast] videoResolution: 1080
! Jan 15, 2017 14:38:08.239 [0x7f665b959700] INFO - [Chromecast] [PDE] Player decision
! Jan 15, 2017 14:38:08.258 [0x7f6663fff700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…
! Jan 15, 2017 14:38:08.264 [0x7f665e911700] INFO - [Chromecast] Player: html
! Jan 15, 2017 14:38:08.289 [0x7f665b959700] INFO - [Chromecast] Protocol: http
! Jan 15, 2017 14:38:08.313 [0x7f665c7ff700] INFO - [Chromecast] Direct Play: false
! Jan 15, 2017 14:38:08.333 [0x7f665ada1700] INFO - [Chromecast] [Transcoder] Video (start) options
! Jan 15, 2017 14:38:08.354 [0x7f665c7ff700] INFO - [Chromecast] hasMDE: 1
! Jan 15, 2017 14:38:08.358 [0x7f6663d11700] VERBOSE - [TranscodeOutputStream] Waiting 100ms for more data…

Glad it worked for you hammy :slight_smile: Nice to be able to give back something for once.

Dj - From what you posted it certainly seems like its missing some kind of support:
“INFO - [Chromecast] canDirectStreamVideo: false” also are you only trying to play 1080? Your log mentions that resolution… I never had a problem with that.

Oh and zurick… super useful info. TY for that.

Sorry again for the stupid question but where are those profiles changed?

@zpaolo11x said:
Sorry again for the stupid question but where are those profiles changed?

Windows? For me it’s C:\Program Files (x86)\Plex\Plex Media Server\Resources\Profiles\

@only1hammy said:

@zpaolo11x said:
Sorry again for the stupid question but where are those profiles changed?

Windows? For me it’s C:\Program Files (x86)\Plex\Plex Media Server\Resources\Profiles\

Thank you, is there a way to know what profile Plex is using? Should I check the logs for that? I notice that there is a “Opera TV Web” profile and also profiles for Sony Bravia (my Smart TV) so I’m not sure which one to tinker with :smiley:

@Clmcm400 said:
Glad it worked for you hammy :slight_smile: Nice to be able to give back something for once.

Dj - From what you posted it certainly seems like its missing some kind of support:
“INFO - [Chromecast] canDirectStreamVideo: false” also are you only trying to play 1080? Your log mentions that resolution… I never had a problem with that.


I know it's saying it can't direct stream but other owners of this TV have had success with Plex direct playing HEVC content when altering the profile, like on this post: http://www.avsforum.com/forum/166-lcd-flat-panel-displays/2378658-official-vizio-2016-p-series-owners-thread-uhd-hdr-dv-no-price-talk-please-182.html#post43180674

I don't know what I'm missing but this sure is frustrating =/

Just wanted to add the XML edits worked for me… Using lsio pms docker. It was driving me bananas …as it was pinning all 8 cores of my fx8350

Thanks

@Djcurley said:
I know it’s saying it can’t direct stream but other owners of this TV have had success with Plex direct playing HEVC content when altering the profile, like on this post: Official Vizio 2016/2017 P Series Owners ONLY Thread UHD/HDR/DV No Price Talk Please | Page 182 | AVS Forum

I don’t know what I’m missing but this sure is frustrating =/

I banged my head against this for a few days as well, turns out the latest firmware on our 2016 Vizio P series ( as of firmware 3.0.13.5) disabled local HEVC streaming. I’m buying a CC ultra to fix it.

@Clmcm400 's code worked for me to get HEVC/H.265 directplay working on Chromecast Ultra too! Thanks a lot @Clmcm400!

I had to edit it slightly, maybe due to an update. Here is my full Chromecast.xml file, direct playing HEVC without transcoding as of Mar 1st, 2017:

    <?xml version="1.0" encoding="utf-8"?>
    <Client name="Chromecast">
      <!-- Edited with Clmcm400's code from https://forums.plex.tv/discussion/244663/chromecast-ultra-profile-doesnt-support-hevc/p2 -->
      <TranscodeTargets>
        <VideoProfile protocol="http" container="matroska" codec="h264,h265,hevc" audioCodec="eac3,ac3,aac,mp3" context="streaming" />
        <MusicProfile container="matroska" codec="mp3" />
        <PhotoProfile container="jpeg" />
        <SubtitleProfile container="ass" codec="ass" />
      </TranscodeTargets>
      <DirectPlayProfiles>
    	<VideoProfile container="mp4" codec="Hevc,mpeg1video,mpeg2video,h264,mpeg4" audioCodec="eac3,ac3,aac,mp3,mp2"/>
    	<VideoProfile container="mkv" codec="vp9,hevc,h265,mpeg1video,mpeg2video,h264,mpeg4" audioCodec="eac3,ac3,aac,mp3,mp2,pcm,flac,alac" subtitleFormat="srt,ass"/>
      </DirectPlayProfiles>
      <CodecProfiles>
        <VideoCodec name="h265,hevc,vp9">
          <Limitations>
    		<UpperBound name="video.width" value="3840"/>
    		<UpperBound name="video.height" value="2176"/>
    		<UpperBound name="video.bitrate" value="75000"/>
          </Limitations>
        </VideoCodec>
        <VideoAudioCodec name="*">
          <Limitations>
            <UpperBound name="audio.channels" value="6" />
          </Limitations>
        </VideoAudioCodec>
      </CodecProfiles>
    </Client>

Thanks for the XML @frggl, all we need now is for Plex to differentiate regular CC and CC Ultra