Plex won't Direct Play/Stream local 4k

chromecast

#1

Server spec: i7 4790k
Cast device: Chromecast Ultra
TV: LG 58UF8300
ISP: Verizon Fios 150 down

Hi, I am trying to Direct Play/Stream my local 4K HEVC Movie files, but they all are being transcoded and subsequently begin to stutter. Stuttering issues aside, what would cause my 4K movies to not play directly? I have tested multiple 4K movies and all seem to force transcoding. Could this be an issue with my TV? Plex? or something else entirely?

Also, any tips (server setting tweaks, etc) on how to mitigate the stuttering during my 4K transcodes? Increase the IPC buffer size? Could I optimize all the 4K videos?


#2

I've had some luck replacing the chromecast profile with the following. It's a bit of cut and paste from a few profiles. It's got my 4K Hevc files direct streaming wich has obviously reduced the load on the server. Can't promise it doesn't break playback of some files but so far none of my HEVC/H.264 files have had any trouble

<?xml version="1.0" encoding="utf-8"?>
<Client name="Chromecast">
<TranscodeTargets>
<VideoProfile protocol="http" container="matroska" codec="h264,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,mpeg1video,mpeg2video,h264,mpeg4" audioCodec="eac3,ac3,aac,mp3,mp2,pcm,flac,alac" subtitleFormat="srt,ass"/>
<MusicProfile container="mp3" codec="mp2,mp3"/>
<MusicProfile container="ac3" codec="ac3"/>
<MusicProfile container="mp4" codec="aac"/>
<MusicProfile container="flac" codec="flac"/>
<MusicProfile container="wav" codec="pcm"/>
<PhotoProfile container="jpeg,png,gif"/>
</DirectPlayProfiles>
<CodecProfiles>
<VideoCodec name="Hevc,vp9">
<Limitations>
<UpperBound name="video.width" value="3840"/>
<UpperBound name="video.height" value="2176"/>
</Limitations>
</VideoCodec>
<VideoCodec name="h264,mpeg4">
<Limitations>
<UpperBound name="video.width" value="1920" isRequired="true"/>
<UpperBound name="video.height" value="1080" isRequired="true"/>
<UpperBound name="video.bitrate" value="18000"/>
</Limitations>
</VideoCodec>
</CodecProfiles>
</Client>


#3

Hi. Comfirms that this Works. Just how will this affect Chromecast and CC2. I have som Older unit that Plays from my server to.


#4

@Halfe said:
Hi. Comfirms that this Works. Just how will this affect Chromecast and CC2. I have som Older unit that Plays from my server to.

I suspect it will cause problems with the older chromecast. I've just got the one Chromecast Ultra so it suits my situation just fine.


#5

@Snail02 said:
I've had some luck replacing the chromecast profile with the following. It's a bit of cut and paste from a few profiles. It's got my 4K Hevc files direct streaming wich has obviously reduced the load on the server. Can't promise it doesn't break playback of some files but so far none of my HEVC/H.264 files have had any trouble

<?xml version="1.0" encoding="utf-8"?>
<Client name="Chromecast">
<TranscodeTargets>
<VideoProfile protocol="http" container="matroska" codec="h264,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,mpeg1video,mpeg2video,h264,mpeg4" audioCodec="eac3,ac3,aac,mp3,mp2,pcm,flac,alac" subtitleFormat="srt,ass"/>
<MusicProfile container="mp3" codec="mp2,mp3"/>
<MusicProfile container="ac3" codec="ac3"/>
<MusicProfile container="mp4" codec="aac"/>
<MusicProfile container="flac" codec="flac"/>
<MusicProfile container="wav" codec="pcm"/>
<PhotoProfile container="jpeg,png,gif"/>
</DirectPlayProfiles>
<CodecProfiles>
<VideoCodec name="Hevc,vp9">
<Limitations>
<UpperBound name="video.width" value="3840"/>
<UpperBound name="video.height" value="2176"/>
</Limitations>
</VideoCodec>
<VideoCodec name="h264,mpeg4">
<Limitations>
<UpperBound name="video.width" value="1920" isRequired="true"/>
<UpperBound name="video.height" value="1080" isRequired="true"/>
<UpperBound name="video.bitrate" value="18000"/>
</Limitations>
</VideoCodec>
</CodecProfiles>
</Client>

Thank you for this. It has been the only way I have managed to play HDR demo clips on my new TV. USB playback failed, built-in cast failed, Plex app failed, Kodi app failed, PC failed, etc etc. This profile worked first time, even for demanding files like the LG Chess HDR clip.

I would like to force CCU to not transcode anything, at least for testing purposes. Do you know if just increasing the video.bitrate value would achive this or is there another solution?


#6

FYI - you might need to add in:

UpperBound name="video.bitrate" value="18000"/>

and increase the bitrate for videocodec hevc,vp9. Mine needed a much higher value to play my videos.


#7

I used the above and changed the h264 profile to allow 4K too. Now the strange thing: I was able to play a h264 file with this profile but the h265 file I have fails instantly if I ask for "original" (android client). Any ideas?

Another problem: while the h264 file plays it is very choppy. Since it is on a wired connection I cannot imagine this is a bandwidth issue? Some buffering setting need to be fixed to make that work?


#8

File with the following specs play with no audio also with the suggest XML.

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 9 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 1 h 0 min
Bit rate : 7 869 kb/s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.356
Stream size : 3.32 GiB (91%)
Writing library : x264 core 148 r2744+8 b97ae06 / tmod bb0ae40 X86_64
Encoding settings : cabac=1 / ref=9 / deblock=1:-3:-3 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / fade_compensate=0.00 / psy_rd=1.05:0.15 / mixed_ref=1 / me_range=36 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=6,6 / fast_pskip=0 / chroma_qp_offset=-3 / threads=22 / lookahead_threads=3 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=9 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=18.0000 / qcomp=0.70 / qpmin=0:0:0 / qpmax=69:69:69 / qpstep=4 / ip_ratio=1.10 / pb_ratio=1.10 / aq=3:0.65 / aq-sensitivity=10.00 / aq-factor=1.00:1.00:1.00 / aq2=0 / aq3=0
Language : English
Default : Yes
Forced : No

Audio
ID : 2
Format : E-AC-3
Format/Info : Audio Coding 3
Format settings, Endianness : Big
Codec ID : A_EAC3
Duration : 1 h 0 min
Bit rate mode : Constant
Bit rate : 640 kb/s
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 kHz
Frame rate : 187.500 FPS (256 spf)
Compression mode : Lossy
Stream size : 276 MiB (7%)
Language : English
Default : Yes
Forced : No


#9

@kamakamadaun said:
File with the following specs play with no audio also with the suggest XML.

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 9 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 1 h 0 min
Bit rate : 7 869 kb/s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.356
Stream size : 3.32 GiB (91%)
Writing library : x264 core 148 r2744+8 b97ae06 / tmod bb0ae40 X86_64
Encoding settings : cabac=1 / ref=9 / deblock=1:-3:-3 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / fade_compensate=0.00 / psy_rd=1.05:0.15 / mixed_ref=1 / me_range=36 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=6,6 / fast_pskip=0 / chroma_qp_offset=-3 / threads=22 / lookahead_threads=3 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=9 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=18.0000 / qcomp=0.70 / qpmin=0:0:0 / qpmax=69:69:69 / qpstep=4 / ip_ratio=1.10 / pb_ratio=1.10 / aq=3:0.65 / aq-sensitivity=10.00 / aq-factor=1.00:1.00:1.00 / aq2=0 / aq3=0
Language : English
Default : Yes
Forced : No

Audio
ID : 2
Format : E-AC-3
Format/Info : Audio Coding 3
Format settings, Endianness : Big
Codec ID : A_EAC3
Duration : 1 h 0 min
Bit rate mode : Constant
Bit rate : 640 kb/s
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 kHz
Frame rate : 187.500 FPS (256 spf)
Compression mode : Lossy
Stream size : 276 MiB (7%)
Language : English
Default : Yes
Forced : No

You may want to try the profile created by @Clmcm400 in this thread.


#10

Thanks for the suggestion. Same no-audio problem though.


#11

@kamakamadaun said:
Thanks for the suggestion. Same no-audio problem though.

We're really just making this up as we go along until Plex get their act together and fully support the CCU. I'm guessing the problem is that the profile is setup to direct play/stream E-AC3 while it needs transcoding, but I'm not really sure. I also don't have any files with that audio for testing.

Hopefully these smart guys who created the profiles can help out.


#12

Yeah I should have said that. It indeed plays it "direct". I tried to remove the codec from the profile in the DirectPlayProfiles section but it was still playing direct (= no audio). I guess it needs to be added somewhere else.
I also tried adding:

in the TranscodeTargets section but it still direct plays.


#13

Under Server Settings and Languages, make sure to uncheck "Automatically select audio and subtitle tracks " and Subtitle mode setting should be "Manually selected"


#14

Has anyone made any further optimizations to this? Did anyone test @kristofue idea? I am getting my 4k tv and chromecast ultra next week and im trying to plan this out.


#15

The main reason is that Chromecast Ultra can't stream 4K H.265 video, if you wish to stream 4K H.265 video to LG 4K TV, it would be much ideal for you to choose Roku 4/Premiere/Premiere+, Amazon Fire TV 2 or Nvidia Shiled TV.


#16

@emma24xia said:
The main reason is that Chromecast Ultra can't stream 4K H.265 video.

You are wrong. According to Google themselves the Chromecast Ultra can play "HEVC / H.265 Main and Main10 Profiles up to level 5.1 (2160p/60fps)".

It is the Plex team who have not yet provided support for this.

See: https://developers.google.com/cast/docs/media for source
See: https://forums.plex.tv/discussion/244663/chromecast-ultra-profile-doesnt-support-hevc for workaround