Chromecast Ultra and 2nd Gen - Error code: h4 (Not Supported)

After finally getting a plex pass they essentially stopped supporting my core streaming device.
They are trying to generate AD revenue.

I am having this problem too, and so far I haven’t found any way to fix it.

+1 I’m also experiencing this problem when trying to cast to my Google Home Hub.

And another +1 - in hotel room with Chromecast support to TV (no idea models etc).

Exact same issue, the workaround of playing a few seconds on my phone and then casting works but it is a pain in the ass.

I am seeing this issue as well. For me it only happens when I cast from my Cellphone (Pixel2) and I can usually workaround the issue by casting from a Laptop or computer.

Been happening for years, they refuse to fix it. Sometimes it happens if I start media with the subs on, sometimes it happens with more than 5.1 channel aac audio. It’s shocking, worst buy ever.

Yeah, I’ve been having very similar issues.

The trick worked for me:

Start playing on the phone, then once it starts, cast to the tv

I seem to be having similar issue but specifically only on movies with Audio track of TrueHD. If I switch the audio stream to AC3 5.1 I have no issues. Normally if I run TrueHD it would just transcode. Playing on mobile device then casting doesn’t seem to work for me. Maybe something wrong with my Chromecast profile XML? I can’t say when it started happening, but my videos used to work flawlessly.

4 Likes

Also same issue on Google Nest Hub as well as Google Nest Hub Max.

Has been happening for months !!!

Something has changed 
 videos in several formats that I was able to cast to Google Nest Hub and Hub Max previously, no longer actually play.

I had the same problem this fixed it!

Encountered this problem as well; very disappointing, since the whole premise is accessing our own media, not content that is already available from other streaming services :(.

The workaround of starting the stream on the phone then enabling casting mid-stream (even just a few seconds in) did work, but still


I’m also having this problem. Haven’t found a workaround yet. One clue though
 Most videos play fine but a HEVC(x265) video with AAC 7.1 sound wont play on my new LG tv but strangely it will play on my older samsung TV (both using a chromecast ultra). So I’m assuming that somehow the TV recieving the stream is part of the issue. Please fix soon!

Same problem here. The workaround that works for me is:
1: Start playback on my mobile device
2: Force transcode (while on mobile device)
3: Start casting.

And I completely agree, that this is an unacceptable problem that needs to be fixed. For example, I share my library with my dad who will never figure something like this out on his own. Also, it’s a PITA

I’m too experiencing the same behaviour :disappointed:

+1 Has been happening for months for me too. Pixel 2XL on Chromecast 1st and 2nd generation. Starting streaming while connected to Chromecast, then immediately switching quality to 480p, usually works.

Sometimes everything works fine without the workaround, for 35 or 40 minutes, before the severe stuttering begins. But it always happens eventually.

This started a few months ago - previously no issues whatsoever.

Have tried disabling secure connection, and various other suggested workarounds, to no avail.

Looking for an alternative to Plex, since it’s essentially unusable now.

Add me to the list. Just purchased a lifetime subscription only to trip on this. I have a recording that fails on both Chromecast and the TiVo app.

Here is the log from one of the attempts to play. I changed a couple of fields I thought might be sensitive.

Aug 16, 2020 16:36:19.390 [0x9e997440] INFO - [Chromecast] [System] Load: {“media”:{“contentId”:"/library/metadata/7975",“streamType”:“BUFFERED”,“contentType”:“video/mp4”,“metadata”:{“metadataType”:0,“title”:“Britannia”},“duration”:3001.078,“customData”:{“offset”:719,“bitrate”:“200000”,“directStream”:true,“directPlay”:true,“subtitleSize”:“100”,“subtitleColor”:"#ffffff",“subtitlePosition”:“bottom”,“audioBoost”:“100”,“autoPlay”:true,“user”:{“username”:“foobar”},“server”:{“machineIdentifier”:“deadbeefdeadbeefdeadbeefdeadbeef”,“protocol”:“https”,“address”:“10-0-144-244.767e635597f44b9baee709b09a088d67.plex.direct”,“port”:32400,“accessToken”:“transient-0c5a043d-5e33-4d51-914a-355e62d6579e”,“version”:“1.19.5.3112-b23ab3896”,“transcoderVideo”:true,“transcoderAudio”:true,“transcoderVideoRemuxOnly”:false,“isVerifiedHostname”:false},“containerKey”:"/playQueues/124?own=1&repeat=0&window=200"},“mediaCategory”:“VIDEO”},“autoplay”:true,“currentTime”:719.137,“playbackRate”:1,“requestId”:2,“type”:“LOAD”}
Aug 16, 2020 16:36:21.032 [0xa6470440] WARN - [Chromecast] Did not move header “accept” to query string. This can result in an unnecessary OPTIONS preflight request.
Aug 16, 2020 16:36:21.118 [0xa32ff440] INFO - [Chromecast] [MDE] Augmented profile: { “directPlay”: { “mp4”: { “mimeType”: “video/mp4; codecs=“avc1.42E01E””, “video”: { “codecs”: { “h264”: { “maxLevel”: 42 } }, “maxWidth”: 1920, “maxHeight”: 1080, “maxBitDepth”: 8, “maxFrameRate”: 60 }, “audio”: { “codecs”: { “aac”: { “maxSamplingRate”: 48000, “maxChannels”: 2 }, “mp3”: {} } } }, “mkv”: { “mimeType”: “video/webm”, “video”: { “codecs”: { “h264”: { “maxLevel”: 42 }, “vp8”: {} }, “maxWidth”: 1920, “maxHeight”: 1080, “maxBitDepth”: 8, “maxFrameRate”: 60 }, “audio”: { “codecs”: { “aac”: { “maxSamplingRate”: 48000, “maxChannels”: 2 }, “mp3”: {}, “vorbis”: {} } } }, “mpegts”: { “protocol”: “hls”, “video”: { “maxWidth”: 1920, “maxHeight”: 1080, “maxBitDepth”: 8, “maxFrameRate”: 60 } } }, “directStream”: { “video”: { “maxWidth”: 1920, “maxHeight”: 1080, “maxBitDepth”: 8, “maxFrameRate”: 60, “codecs”: { “h264”: { “maxLevel”: 42 } } }, “audio”: { “codecs”: { “aac”: { “maxSamplingRate”: 48000, “maxChannels”: 2 }, “mp3”: {}, “opus”: {}, “vorbis”: {} }, “maxChannels”: 6 } } }
Aug 16, 2020 16:36:21.408 [0x9f198440] INFO - [Chromecast] X-Plex-Chunked: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] copyts: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] X-Plex-Client-Profile-Extra: add-limitation(scope=videoAudioCodec&scopeName=aac&type=upperBound&name=audio.channel&value=2)
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] subtitles: burn
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] offset: 714
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] session: e2bahz8aax5ppmnze2oe5eap
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] X-Plex-Session-Identifier: 00mvgs5whdj2k0vdhswfilva
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] mediaBufferSize: 30720
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directStreamAudio: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] location: lan
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] audioBoost: 100
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] subtitleSize: 100
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directStream: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directPlay: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] fastSeek: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] protocol: http
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] partIndex: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] mediaIndex: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] path: /library/metadata/7975
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] hasMDE: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] [Transcoder] Video (decision) options
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] X-Plex-Chunked: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] copyts: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] X-Plex-Client-Profile-Extra: add-limitation(scope=videoAudioCodec&scopeName=aac&type=upperBound&name=audio.channel&value=2)
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] subtitles: burn
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] offset: 714
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] session: e2bahz8aax5ppmnze2oe5eap
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] X-Plex-Session-Identifier: 00mvgs5whdj2k0vdhswfilva
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] mediaBufferSize: 30720
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directStreamAudio: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] location: lan
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] audioBoost: 100
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] subtitleSize: 100
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directStream: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] directPlay: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] fastSeek: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] protocol: http
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] partIndex: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] mediaIndex: 0
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] path: /library/metadata/7975
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] hasMDE: 1
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] [Transcoder] Video (start) options
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] Direct Play: false
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] Protocol: http
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] Player: html
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] [PDE] Player decision
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] videoResolution: 360
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] bitrate: 161
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] canDirectStreamAudio: false
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] canDirectPlay: false
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] canPlay: true
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] [MDE] Finished analysis of 161 (mp4, aac)
Aug 16, 2020 16:36:21.409 [0x9f198440] WARN - [Chromecast] [MDE] Invalid profile property; channels: 5 > 2
Aug 16, 2020 16:36:21.409 [0x9f198440] WARN - [Chromecast] [MDE] Invalid profile property; channels: 5 > 2
Aug 16, 2020 16:36:21.409 [0x9f198440] WARN - [Chromecast] [MDE] No stream selected; will not be able to analyze stream codecs
Aug 16, 2020 16:36:21.409 [0x9f198440] INFO - [Chromecast] [MDE] Starting analysis of 161 (mp4, aac)
Aug 16, 2020 16:36:22.279 [0x9e196440] ERROR - [Transcoder] Unknown decoder ‘aac_lc’
Aug 16, 2020 16:36:27.288 [0x9e997440] ERROR - [TranscodeOutputStream] Session appears to have died from under us
Aug 16, 2020 16:36:27.355 [0x9e196440] WARN - [Chromecast] [Player] A critical HTML media error occurred: 4 (Not Supported); the player cannot recover
Aug 16, 2020 16:36:27.553 [0xa32ff440] WARN - [Chromecast] NotSupportedError: Failed to load because no supported source was found.
Aug 16, 2020 16:36:27.553 [0xa32ff440] WARN - [Chromecast] Did not move header “accept” to query string. This can result in an unnecessary OPTIONS preflight request.
Aug 16, 2020 16:36:27.804 [0x9f198440] ERROR - Unknown metadata type: folder
Aug 16, 2020 16:36:27.839 [0x9e997440] WARN - [Chromecast] Did not move header “accept” to query string. This can result in an unnecessary OPTIONS preflight request.
Aug 16, 2020 16:36:27.915 [0x9e196440] WARN - [Chromecast] [Player] Player was closed or a new playback session was started; ignoring callback

That looks like an issue where Plex didn’t have the necessary codec.

This may be helpful for that issue, at least.