The Stream That Was 'Running' But Completely Dead

A 24/7 home camera → YouTube Live pipeline that looked healthy in every way that mattered, except it never actually produced a single frame — and the YouTube API lifecycle bugs waiting on the other side once it did.

This article is also available in Traditional Chinese: 中文版 — same content, just a language difference.

The container was running. Docker said so. No crash, no restart loop, no error in the logs worth calling an error. And the stream was still completely, silently dead — zero frames ever produced, for as long as it stayed up. That gap between "the process is alive" and "the process is doing its job" turned out to be the whole story, twice over: once in the video encoder, and again a layer up in the YouTube Live API's own broadcast lifecycle.

Bug #1: a timestamp bug that presents as "nothing is wrong"

The pipeline: an indoor home camera's RTSP feed, re-encoded by ffmpeg into an RTMP push to YouTube Live, running continuously as a long-lived container. The first version of this looked completely fine at a glance — the container stayed up indefinitely, no crash-loop, no restart churn Docker would have surfaced as unhealthy. And yet: zero video frames were ever actually produced. Not "occasionally drops a frame." Not "reconnects and recovers." Genuinely zero, for the entire life of the container.

Unlock this article to keep reading, or subscribe for unlimited access to everything. See Pricing for details.