Content Steering Error in Handling Steering Manifest

I would like to perform pathway cloning as described in the video Deliver reliable streams with HLS Content Steering and the document draft-pantos-hls-rfc8216bis-12. Unfortunately, I keep getting an error:

CoreMediaErrorDomain (Code: -15881): Content Steering: error in handling Steering Manifest, ignoring and continue playback.

The client device is an iPhone (iOS 16.2). There is a video accessible from an "azure" CDN and a video accessible from an "edge" CDN. I want the player, which is playing the video from the azure CDN, to switch to the edge CDN.

This is the manifest received by the player:

#EXTM3U
#EXT-X-CONTENT-STEERING:SERVER-URI="https://example.com/content-steering?pathwaycloning=true",PATHWAY-ID="azure"
#EXT-X-STREAM-INF:BANDWIDTH=5605600,RESOLUTION=416x240,CODECS="avc1.64001e,mp4a.40.2",PATHWAY-ID="azure"
https://azure.com/contentsteering/stream_0/stream.m3u8

This is the steering manifest received by the player (every 10s, as specified by TTL):

{
    "VERSION": 1,
    "TTL": 10,
    "RELOAD-URI": "https://example.com/content-steering?pathwaycloning=true",
    "PATHWAY-PRIORITY": [
        "edge",
        "azure",
        "aws"
    ],
    "PATHWAY-CLONES": [
        {
            "BASE-ID": "azure",
            "ID": "edge",
            "URI-REPLACEMENT": {
                "HOST": "edge.com"
            }
        }
    ]
}

I would expect the player to request the media files (stream.m3u8, data00.ts, data01.ts...) at https://edge.com/contentsteering/stream_0/. It doesn't, however, and instead I get the error specified in bold above.

Any idea what is wrong with my steering manifest?

Replies

From the info you have provided it appears that you have included a pathway "aws", which is not defined anywhere.

Please try validating the playlist with a recent version of mediastreamvalidator and file a bug if does not detect this error.

Thank you for the fast reply! I removed the "aws" pathway as suggested, but the error remains.

I've validated the playlists and verified that I can play the media from both the "azure" and "edge" CDNs. In fact, I can switch between the CDNs using content steering as long as both pathway ids are specified in the manifest. For example, using manifest

#EXTM3U
#EXT-X-CONTENT-STEERING:SERVER-URI="https://example.com/content-steering?switching=true",PATHWAY-ID="azure"
#EXT-X-STREAM-INF:BANDWIDTH=5605600,RESOLUTION=416x240,CODECS="avc1.64001e,mp4a.40.2",PATHWAY-ID="azure"
https://azure.com/contentsteering/stream_0/stream.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5605600,RESOLUTION=416x240,CODECS="avc1.64001e,mp4a.40.2",PATHWAY-ID="edge"
https://edge.com/contentsteering/stream_0/stream.m3u8

and steering manifest

{
    "VERSION": 1,
    "TTL": 10,
    "RELOAD-URI": "https://example.com/content-steering?&switching=true",
    "PATHWAY-PRIORITY": [
        "edge",
        "azure",
        "aws"
    ],
    "PATHWAY-CLONES": []
}

(It works with and without "aws" in the priority list, even though "aws" is never defined. Probably because I never switch to "aws".)

It seems to be a bug then... I'll file a report.