Use timed metadata with an ultra low latency stream target in Wowza Streaming Cloud

Timed metadata can add interactivity to ultra low latency streams and provide engaging content experiences for your viewers. The Wowza Streaming Cloud™ service with Ultra Low Latency leverages both AMF and ID3 metadata formats as streams move from encoder to player.

In this article, learn how to ingest AMF data into ultra low latency streams in Wowza Streaming Cloud and consider available playback options for timed metadata.

About timed metadata and ultra low latency streaming


Ultra low latency origin servers can ingest AMF data in source streams over RTMP or WOWZ. From there, the origin servers send the AMF data to ultra low latency stream targets for playback using WOWZ over WebSockets. Meanwhile, if HLS is enabled as a fallback for WOWZ ultra low latency streams, Wowza Streaming Cloud converts incoming AMF data into ID3 tags for playback in HLS.

Ingest AMF metadata into a Wowza Streaming Cloud ultra low latency stream target


Wowza Streaming Cloud ultra low latency stream targets can receive AMF metadata with any single-bitrate source stream received over RTMP or WOWZ from an external, third-party encoder, as well as from Wowza Streaming Engine™ and from Wowza GoCoder™ SDK broadcast apps. Incoming AMF metadata can be of different types—integer, string, or date, for example. For a streaming workflow that involves playing the content using HLS as a fallback, we recommend using the dictionary type, which creates a JSON string that is easiest to convert to ID3. 

For instructions on sending AMF metadata with a third-party encoder, see the manufacturer’s documentation.

To use Wowza Streaming Engine to send a stream with AMF data directly to an ultra low latency stream target, first insert the timed metadata using Wowza Streaming Engine. Next, ingest the stream from Wowza Streaming Engine into an ultra low latency stream target in Wowza Streaming Cloud. For instructions on these workflows, see More resources.

With Wowza GoCoder SDK broadcast apps, first insert AMF data programmatically, then send the stream with AMF data directly to an ultra low latency stream target. For instructions on these workflows, see More resources.

Playback options


After configuring a workflow where AMF data flows into to a Wowza Streaming Cloud ultra low latency stream target, you can consider playback options for timed metadata in your ultra low latency stream and its backup HLS stream.

Ultra low latency stream with metadata

You can use the AMF data in ultra low latency streams sent over a WebSocket connection to trigger events during playback. Use Wowza Player for browser-based playback or Wowza GoCoder SDK for mobile app playback to provide ultra low latency stream interactivity using AMF data. See More resources for more information on these workflows.

Backup HLS stream with metadata

You may want your ultra low latency stream target to have a backup HLS stream, which provides a fallback connection in the event that WebSocket connection attempts fail and provides an alternative connection if your audience exceeds the maximum simultaneous viewer limit for an ultra low latency stream target. In order to pass AMF data events to a backup HLS stream, Wowza Streaming Cloud automatically converts AMF data to ID3 tags, a metadata format that HLS supports.

Note: Wowza Streaming Cloud Apple HLS streams that flow through stream target types other than ultra low latency must enable the convertAMFData stream target property to convert AMF data to ID3 tags. See How to ingest and convert timed metadata with the Wowza Streaming Cloud REST API for more information.

In order to provide interactive playback experiences on backup HLS streams, you can leverage Wowza™ Player to listen for ID3 tags and trigger events during playback. See More resources for information on this workflow.

At this time, the GoCoder SDK doesn't pass ID3 tags to native Apple and Android player frameworks, but you can build an HLS player independently that will leverage the timed metadata to invoke an action during playback.

More resources