Skip to content

Playing a stream

A running stream serves itself over all the main protocols at once — there is nothing to enable, the address depends only on the stream's name. The viewer comes to the installation's address; in a cluster, the playback balancer takes them to the right streamer.

The addresses

Protocol Address
HLS /streaming/v/<name>/index.m3u8 — the main path for web, mobile apps and Smart TV
DASH /streaming/v/<name>/Manifest.mpd
MPEG-TS over HTTP /streaming/mpegts/<name> — set-top boxes and VLC
fMP4 stream /streaming/fmp4-stream/<name> — continuous fMP4, handy for tooling
Embedded player /streaming/embed/<name> — a ready-made player page
Stream info /streaming/info/<name> — JSON with the tracks and bitrates

If the stream carries a transcoder with a quality ladder, HLS and DASH serve every quality and the player switches between them on its own.

Two ways of playing live on other pages: serving over SRT — on the restreaming page, watching the archive with rewind — on the DVR page.

Playback in a cluster

The /streaming addresses are the delivery of one specific machine: every streamer serves them itself, and there is no balancing on that path. In a cluster you do not need to pin the viewer to a machine — central has a playback balancer: the same addresses, only with the /playback prefix instead of /streaming, on the central address:

http://<central address>/playback/v/<name>/index.m3u8
http://<central address>/playback/embed/<name>

The balancer finds a live streamer the stream is placed on and takes the viewer there in one of two ways:

  • Redirect — the player gets a 302 to the streamer's public payload URL and talks to the machine directly from then on; central takes no part in the traffic.
  • Proxy — the streamer has no public address set, and central relays the media through itself.

The way is chosen by the streamer's delivery settings — see Connection and delivery.

If the cluster has edge streamers, the balancer prefers them: viewers go to the edges, and the capture streamers serve only the intra-cluster feeds. Streamers in different cities and networks are matched to viewers by CDN zones.

Playback protection applies on this path too: the policy is enforced by the streamer the balancer took the viewer to.

The embedded player

/streaming/embed/<name> is a complete player page: open it in a browser for a quick check, or embed it into your site with an iframe. The ?autoplay=false parameter disables autostart.

The embedded player with live air

The same player shows the stream on the basic settings tab of the console.

Check the delivery

The fastest check is the playlist:

curl -s http://<address>/streaming/v/<name>/index.m3u8 | head

A live stream answers with a manifest listing the qualities (#EXT-X-STREAM-INF). A manifest of nothing but the header means the stream exists but has nothing to serve: almost always raw codecs without a transcoder.

  • 404. There is no stream with that name — the name goes into the address literally.
  • The manifest is there, the player does not play. Look at the codecs in /streaming/info/<name>: browser players read H.264/AAC.
  • The stream is not green. The source first, playback second.