LL-HLS output targets
Select LL-HLS in a stream's output target dialog. It requires Recast. Choose the original source or an existing Flywheel processor; only the latter requires the Flywheel license. Publishing continues without an open browser or player.
The controls match STView: MPEG-TS by default, listen address 127.0.0.1, an
automatic media port, 2000-ms segments, 200-ms parts, and a 15-segment live window.
MPEG-TS carries KLV inside the transport stream. Fragmented MP4 (CMAF) carries
video and AAC audio renditions with STView's timestamped KLV JSON sidecar.
Generic HLS players do not automatically display that metadata.
An optional Playback URL, such as
http://192.168.1.20:8088/live/camera1/index.m3u8, sets the advertised host, port,
and stable entry path. SkyView hosts this URL; it does not upload to that host.
The listen address selects an interface on the SkyView server. Wildcard listeners
need a reachable advertised host. Without a configured URL, each start obtains a
new URL. Copy the resolved playback/metadata URLs from the stream's output status.
Counters show bytes published, not bytes downloaded by viewers.
For HTTPS, provide matching PEM certificate and key paths on the server (inside the container when using Docker). HTTPS enables HTTP/2. The listener exposes media only; allow the selected media port through the firewall/container port mapping. Receivers must trust the certificate. Reverse proxies must preserve HLS query parameters and allow blocking requests without buffering live playlists.
Stable URLs redirect to a generation-specific location after media starts. Clients must resolve relative resources against the final response URL. Stopped generations remain readable for two minutes. Restarting the same target preserves its stable URL; distinct targets must use distinct paths. Fixed-port listeners can be shared when their bind address and TLS identity agree.
Supported input paths include UDP, SRT, UDS, file/PCAP replay, Pattern, and RTSP original recast. File and PCAP use the stream's existing replay clock. Flywheel targets publish the selected processor's MPEG-TS feed without encoding it again. Video must be compatible with the SDK publisher (H.264/H.265); CMAF audio is AAC. Source keyframes must fit the configured segment duration. Data-only sources are rejected. A stalled or failed publisher reports a target error and retries with backoff independently of playback and other targets.
Implementation and checks
The bundled skyview-flywheel-worker uses protocol 5, with a separate llhls
mode and probeLLHLS command. Original publishing does not need a Flywheel encoder
or presentation window. SDK v0.9.6 includes headless recast polling and RTSP
latency handling; its Pattern startup logic already waits for video when only
metadata is announced initially. SkyView consumes the tagged SDK without local
patches. All publication directories and HTTP listeners belong to SkyView's
internal/llhls manager.
Windows/Linux packaging must include cmafmux (GStreamer's isobmff plugin),
aacparse, MPEG-TS demux/mux, and H.264/H.265 parsers. Build probes verify both
formats. Rebuild the helper alongside the server when updating the protocol.
Run Go tests for internal/llhls, internal/streams, internal/flywheel,
internal/app, and internal/api; use the Windows test wrapper and set
SKY_VIEW_HOST_MEDIA to a Windows path. Run internal/llhls with race detection.
Frontend verification uses npm test and npm run build in web.
Set SKYVIEW_TEST_LL_HLS=1 and SKYVIEW_FLYWHEEL_WORKER to a freshly built helper,
with gst-launch-1.0 on PATH, to run TestLLHLSNativePublication. It checks real
H.264/AAC publication, partial playlists, CMAF metadata/audio resources, and EOS
through the HTTP origin, plus Pattern video/KLV in both formats. The app's
TestLLHLSNativeTargetIsolation checks the private UDP fan-out, an independently
failing target, simultaneous UDP output, stop/restart, and retained media.
Ordinary runs explicitly skip these native tests.
Windows verification for this change covered those native tests and actual playback in the SDK sample receiver: MPEG-TS embedded KLV and CMAF sidecars both displayed metadata while partial segments played. Configuration, persistence, protocol, target status, TLS/HTTP2, listener-sharing and race checks also ran. Linux and the remaining external-input release matrix below are not verified by the Windows checks.
Release checks on both Windows and Linux should additionally exercise the SDK sample receiver with TS embedded KLV and CMAF sidecar metadata, H.265, RTSP credentials/TCP/latency, SRT/UDS, file and PCAP EOF/looping, Pattern, Flywheel, multiple targets, restarts, HTTPS, and worker crashes. Verify that playback keeps running when a publishing target fails, and that all children exit on shutdown.