ZLS: A Reliable Live Streaming Protocol

ZLS is still experimental and subject to change!

ZLS: Overview

ZLS is an HTTP-based live streaming protocol (producer-side) that does its best to work well in difficult environments, typically outdoors over a a cellular network, e.g., unreliable 4G/LTE and 5G.

ZLS allows pushing multiple streams, each stream consisting of multiple segments of different kinds: video, audio, subtitles, and user-defined data. The latter is useful to pass arbitrary info used for custom overlays, for example. Each stream has a defined priority, so when the network is instable and unreliable, only highest-priority streams continue to be pushed, typically the audio stream.

Goals

Priority of stream when the connection is degraded. A stream may be temporarily dropped to avoid congestion and allow other more important stream to pass. For example, audio segments may pass while video segments are dropped for a few seconds until the connection is strong enough again, so the audience can at least hear.

HTTP-based: because it makes implementing servers and clients easy.

Segments-based: because it makes interoparibility with the end delivery phrase easier, typically using HLS or DASH. Segments can be re-used as is.

Where ZLS worked so far

ZLS has been tested on the following configurations:

Why not use...

...RTMP?

...SRT?