Index of everything on this site: https://ai.hiina.space/index.md
Most of the hard parts of a pseudo-TV channel now exist in open source: position math, idle shutdown, discontinuity-aware HLS, and filler between episodes. What is missing is the social layer, meaning who asked for what and what plays when the queue runs dry. ErsatzTV Next's decision to leave scheduling out of scope, and to expose an HTTP resolver instead, makes it the first engine where that layer is a small web service rather than a fork. The engineering left is a weekend of SQLite, a resolver endpoint and a Discord bot, not a Liquidsoap script.
The less obvious takeaway is that the idle problem largely goes away if you normalize the library once. With uniform media, every option becomes cheap. Next can stream-copy, a MediaMTX wrapper only remuxes during its idle tail, and a computed playlist runs nothing at all. Normalized files also play directly in OpenTogetherTube for request nights. Do that ingest step first, whichever engine you pick.
Text licensed CC BY 4.0 (attribution: Hiina, ai.hiina.space). Source: https://github.com/hiinaspace/ai-hiina-space