HDS requirements

This topic explains the requirements and recommendations for live stream encoders compatible with Media Services Live for Adobe HTTP Dynamic Streaming (HDS). Compatible encoders should be capable of successfully streaming a live event, but meeting these guidelines does not guarantee performance of any encoder on Media Services Live.

🚧

HDS streams pushed from unqualified live encoders will be rejected.

Media Services Live for HDS does not honor live encoder HTTP DELETE requests. While Media Services servers will return a 200 HTTP status code, the content is not actually deleted as requested.

Alternate hostname uploads

Encoders should be capable of using multiple hostnames when publishing multiple bitrates to better handle failure situations. Encoders that cannot use multiple hostnames will have a single point of failure. If the single upload host being used is lost, the event is interrupted until the host returns or a new host is provisioned.

Primary and backup HDS stream URLs

Encoders should be able to input primary and backup publishing and playback hostnames and primary and backup paths for a given stream.

To avoid interruptions in stream delivery, set up your encoder to publish the same content simultaneously to primary and backup URLs, including:

  • Set-level manifest
  • Stream-level manifest
  • DRM metadata files
  • Fragments
  • Bootstrap

Refer to Publish HDS streams for syntax.

The HDS player requests the stream-level manifest using the URLs. It then parses information in the stream-level manifest and requests object names by appending to the base URLs in stream-level manifests. The player uses one of these HTTP error responses from the server to request the backup stream content:
https://testconfig-i.akamaihd.net/hds/live/50002-b/test79/5000kbpsSeg24Frag41
https://testconfig-i.akamaihd.net/hds/live/50002-b/test79/5000kbps.drmmeta

PUT/POST request

Encoders must be capable of uploading media fragments, bootstrap, DRM metadata, and manifest files using POST/PUT requests. Each media fragment, bootstrap, DRM metadata, and manifest file should be uploaded in its own HTTP request.

Upload order

Upload the files and segments for HDS in this order:

  1. Set-level manifest. Upload once at the beginning of each stream/event.
  2. DRM metadata file if using PHDS or Adobe Access. Upload once for each representation or bitrate.
  3. Media fragment file. Upload for every fragment duration.
  4. Bootstrap file. Upload for every fragment duration.
  5. Stream-level manifest. Upload for every fragment duration or more frequently if captioning or other media is involved.

URL format

The encoder must be capable of posting URL in the formats described in these sections.

Set-Level Manifest

Encoders should allow the Set-Level manifest file to be uploaded only once for each stream/event. In addition, the Set-Level Manifest name must end with key words setlevelmanifest or master. For example, a set level manifest name could be testsetlevelmanifest.f4m or examplemaster.f4m, or simply master.f4m or setlevelmanifest.f4m.

The URL format for the Set-Level manifest is: https://hostname/format/streamID/eventname/anyname{setlevelmanifest or master}.f4m

For example:
https://p-ep50002.i.akamaientrypoint.net/hds/50002/test67/test67setlevelmanifest.f4m
https://p-ep50002.i.akamaientrypoint.net/hds/50002/test67/test67master.f4m
https://p-ep50002.i.akamaientrypoint.net/hds/50002/test67/master.f4m
https://p-ep50002.i.akamaientrypoint.net/hds/50002/test67/setlevelmanifest.f4m

DRM metadata

The DRM metadata must be uploaded once for each representation or bitrate and stored in a permanent storage location.

The URL format is: https://hostname/format/streamID/eventname/representationID.drm

Example: https://p-ep50002.i.akamaientrypoint.net/hds/50002/test79/5000kbps.drm

Media fragment file

The Media fragment file must be uploaded every six seconds for fragment duration of six seconds for each bitrate or representation.

The URL format is: https://hostname/format/streamID/eventname/representationIDSeg1-Fragnumber

Example: https://p-ep50002.i.akamaientrypoint.net/hds/50002/test79/5000kbpsSeg1-Frag34

Bootstrap file

The bootstrap file must be uploaded every six seconds for fragment duration of six seconds for each bitrate or representation. This file must be an external file, not embedded one.

The URL format is: https://hostname/format/streamID/eventname/representationID.bootstrap

Example: https://p-ep50002.i.akamaientrypoint.net/hds/50002/test79/5000kbps.bootstrap

Stream-Level manifest

The Stream-Level manifest must be uploaded every six seconds (the same as fragment duration of six seconds) for each bitrate or representation.

The URL format is: https://hostname/format/streamID/eventname/representationID.f4m

Example: https://p-ep50002.i.akamaientrypoint.net/hds/50002/test79/5000kbps.f4m