Home · Blog · Lab

Lab

HEVC on Smart TV: why you hear it but cannot see it

Updated · 6 min read · By the Kraid team

It is a baffling failure: you switch to a channel, the sound starts straight away, the network indicator is perfect… and the picture never shows up. No loading spinner, no error. Black. It happens mostly on channels labelled HEVC, H.265 or 4K, and only on the TV: the same channel plays fine on your phone.

We reproduced it on a real LG TV while developing our webOS app, and the cause is simpler than it looks. We are sharing it because it explains many “my TV does not support HEVC” claims that are actually false.

Two paths for video inside a Smart TV

Samsung (Tizen) and LG (webOS) apps are not Android apps: they are web applications running on a browser built into the TV. And that browser has two different ways of playing video:

PathHow it worksHEVC / H.265
MSE (Media Source Extensions)The app downloads the stream with JavaScript, chops it up and feeds it to the browser; this is what libraries like hls.js or mpegts.js do. Software decoding by the browser.No: the built-in browser on these TVs does not decompress H.265 this way
Native <video>The app hands the URL straight to the TV and the firmware downloads and decodes it, with the same chip the aerial tuner uses.Yes: uses the TV's hardware HEVC decoder

The TV's chip decodes HEVC perfectly. The built-in browser does not. When an app picks the MSE path for an HEVC channel, it is asking the browser to do something it cannot.

Why you can hear it

Here is the detail that makes the failure so confusing. An MPEG-TS or HLS stream carries two tracks: audio (usually AAC) and video (H.264 or H.265). The browser can decode AAC. So on the MSE path this happens:

  1. The library reads the stream and correctly detects both tracks.
  2. It feeds the audio track to the browser, which plays it.
  3. It feeds the H.265 video track to the browser, which accepts it without complaint… and never decompresses a single frame.

No component throws an error, because for each of them “everything is fine”: the demuxer read the tracks, the audio plays, the video element has data. Its picture width just stays at zero forever. That is why the symptom is sound with a black screen rather than an error message.

The failure inside the failure

Many apps consider the channel “started” as soon as the library detects the tracks. At that point they have stopped watching, so they never find out that the video was never decoded. The user is left on black indefinitely, and the app believes it is playing.

What Kraid does on Samsung and LG

Kraid's Tizen and webOS app applies two measures, one preventive and one for rescue:

1. Native HLS by default

When the provider offers the channel as HLS, Kraid hands the URL straight to the TV's native video element instead of going through MSE. That way H.265 goes to the TV's chip, which knows how to decode it, and the app just draws the interface on top.

2. Black-screen detector

For the cases where the stream has to go through MSE (for instance plain MPEG-TS, which the TV's native player will not open), Kraid does not trust “the tracks were detected”. It lets a few seconds of playback go by and checks two things: that time is advancing and that the video has a real width and height. If the clock moves but the picture still measures zero pixels, that is the exact signature of this failure: the app abandons that path and relaunches the channel through the native player, preferring the HLS variant if the provider has one.

The switch happens once per channel (no risk of a loop) and in practice the user only notices the channel taking a few extra seconds to appear the first time.

What you can do in the meantime

  1. If your provider offers the same channel as HLS (.m3u8) and as MPEG-TS (.ts), choose HLS in your TV app's settings: it is the variant that can go to the native player.
  2. If the app has only one path and stays black, it is not that your TV lacks HEVC support: it is the app. A Fire TV Stick or an Android box over HDMI uses its own chip and sidesteps the problem entirely.
  3. If you also see a smear on those same channels when they do play, that is a different problem: 50 fps cadence on 60 Hz panels.

Kraid's apps for Samsung and LG are built and tested with these fixes on real TVs, and are currently under review in both manufacturers' stores. You can check the current status on the Samsung and LG page.

Frequently asked questions

Why does an HEVC channel play sound but show a black screen on my Smart TV?

Because the app is feeding the video to the TV's browser (via MSE, software decoding), which can decompress AAC audio but not H.265 video. The tracks are detected, the audio starts and the video never decodes a single frame. The fix is to hand the stream to the TV's native player, which does use the HEVC chip.

So my TV does not support HEVC?

Almost certainly it does: any Samsung or LG 4K TV from recent years decodes H.265 in hardware for its tuner and its native apps. What does not support it is the software path inside the built-in browser. It is up to the app to pick the right path.

Is it the same as the channel that shows a smear?

No. Black screen with audio is a decoding problem (the video is not decompressed). Smearing or ghosting on 50 fps channels is a panel cadence problem, which we explain in another article. They sometimes coincide on the same channels because HEVC channels tend to be the 50 fps ones, hence the confusion.

Why does the same channel play fine on my phone?

Because the Android app uses the phone's hardware decoder directly, without going through a browser. The problem is specific to platforms where the app runs on a web engine, such as Tizen and webOS.

Built around your TV's chip

Kraid's app for Samsung Tizen and LG webOS hands HEVC to the TV's native decoder and detects a black screen on its own. Built and tested on real TVs, under review in both stores; in the meantime, Kraid runs today on Android, Fire TV and Windows.

Download Kraid IPTV free

Legal notice: Kraid IPTV is a generic media player. It does not include, sell or link to any content, channel or playlist. Users are responsible for the sources they add and for holding the rights needed to watch them. Learn more.