RTMP push and CTV app targets.
ChannelHelm treats connected-TV delivery as a channel target, not as a social dispatch. CTV targets point at the compiled channel state used by the embed player and playlist route.
Player: /embed/{brand_slug}
Playlist: /api/embed/{brand_slug}/playlist.m3u8
RTMP targets
The /channels page stores endpoint URL and encrypted stream key in restream_targets, then enqueues restream_push:{target_id}:{requested_at_ms}. The worker builds a concat playlist from rendered programming rows and runs ffmpeg through workers/integrations/restream.ts.
For smoke tests, set a finite duration in the UI seconds field or RESTREAM_PUSH_SECONDS. Without a finite duration, the worker is expected to run as a long-lived push until stopped.
CTV targets
- Compile channel programming through
channel_compile. - Expose the playlist through
/api/embed/{brand_slug}/playlist.m3u8. - Wrap the playlist in Roku Direct Publisher, a custom Roku SceneGraph app, or a tvOS app.
- Host the local ChannelHelm route through the existing tunnel/media host.
Isolation rule
RTMP failures update only restream_targets.status, last_error, and the restream_push job. They must not mutate package approval, asset dispatch, or published social state.