Streaming issues
Notes from debugging real streaming problems on living-room devices, grouped by what the viewer sees: a spinner, a bad picture, or no playback at all. Each note covers the causes we actually find and what fixes them.
Buffering
The spinner: playback that starts slowly, pauses to rebuffer, or degrades the longer the session runs.
- Tizen / webOS
HLS buffering on Samsung Tizen and LG webOS: what actually causes it
A stream that plays smoothly in a browser can rebuffer constantly on a television. The causes are rarely bandwidth - they are usually the ladder, the segments or the device itself.
- ABR
Low-bandwidth buffering: when the stream really is too big for the connection
The spinning loader is the most common streaming complaint there is. Most of the time the connection is genuinely slower than the rendition being played, and the fix is in how the player and the ladder respond to that, not in the network.
- Player
Buffer management on TV devices: why playback degrades the longer you watch
A television that plays well for ten minutes and badly after an hour has a memory problem, not a network problem. On devices with a fraction of a phone's RAM, the player's buffer strategy decides whether long sessions survive.
- Encoding
Segment duration: the trade-off between latency, overhead and seek speed
Segment length is a balance, not a setting to copy from a tutorial. Too long and everything feels slow; too short and the request overhead itself becomes the bottleneck on television hardware.
- ABR
Startup bitrate and time to first frame
The player has to pick a rendition before it knows anything about the connection. Get it wrong one way and the viewer waits; get it wrong the other and the first seconds look like a phone stream on a 65-inch panel.
- Encoding
Codec and frame-rate switches inside the ladder: why the join stalls
A ladder that uses HEVC for 4K and H.264 below it, or ads encoded at a different frame rate from the programme, forces the decoder to tear down and start again at every boundary. On a television that shows up as a stall or a black frame.
Video quality
Playback that runs but looks or sounds wrong: artefacts, glitches, decoder limits and lip-sync drift.
- Devices
Hardware decoder limits: when a TV says it supports a codec and then cannot play it
The most frustrating class of TV bug: the same stream plays on one model and fails on another with supposedly identical specifications. The codec API said yes; the silicon behind it said no.
- Encoding
Compression artefacts on large screens: banding, blocking and mosquito noise
Nothing is failing, and yet the picture looks cheap: banded skies, blocky fast motion, fuzz around edges. The encoding was tuned on a monitor at arm's length, and the living room is a different place.
- Player
Audio and video out of sync: lip-sync problems that grow over time
Lip-sync drift is one of the few faults every viewer can detect instantly. It has two families of cause - the stream and the player - and telling them apart is the first step.
- Encoding
Green frames and macroblock glitches: decoding without a keyframe
A flash of green, a smear of coloured blocks, a picture that looks tiled for a few seconds and then snaps back. The decoder was asked to draw a frame that depended on one it never received.
Playback failures
Playback that does not start or stops with an error: DRM, geo-blocking, network, manifests and timing bugs.
- Roku
Roku playback errors: how to find the actual cause
A Roku channel that fails to play gives you more information than the on-screen message suggests - if you know where to read it. Here is the order we work through when a stream plays everywhere except on Roku.
- Android TV
ExoPlayer DRM errors on Android TV: provisioning, security level and licence failures
Widevine failures in ExoPlayer look alike from the outside but have very different causes. Separating provisioning, security level and licence problems takes a few minutes once you know what to check.
- DRM
DRM licence acquisition failures: tokens, certificates and networks
The most common playback failure on protected catalogues. The message the viewer sees is generic; the causes are four distinct things, each with a different owner.
- Rights
Geo-restriction errors: "not available in your region" when it should be
Territorial licensing means some content must be blocked outside its region. The support tickets come from the viewers who are inside the region and blocked anyway.
- Network
Network timeouts and retry logic: the player that gives up too early
A single slow segment request should never end a session. It does when the player uses desktop-sized timeouts, retries nothing, or retries everything at once the moment the CDN comes back.
- Manifests
Manifest parsing errors: when the playlist itself is the bug
Playback that fails immediately, on every asset from one packager and on some devices but not others, is usually not the media at all. The player could not read the playlist.
- Timing
Timestamp overflow in long-running streams: why playback jumps after a day
A channel that has been streaming without interruption for a day develops a fault no test caught: the progress bar shows nonsense, playback leaps to a random position, or the player freezes. The timestamps ran out of room.