[DASH] Add content steering support. #1403
Labels
flag: seeking PR
We are actively seeking PRs for this; we do not currently expect the core team will resolve this
type: enhancement
New feature or request
Milestone
Summary from proposal at : https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf
Content distributors often use multiple Content Delivery Networks (CDNs) to distribute their content to the end-users.
They may upload a copy of their catalogue to each CDN, or more commonly have all CDNs pull the content from a
common origin. Alternate URLs are generated, one for each CDN, that point at identical content. DASH players may
access alternate URLs in the event of delivery problems. Content steering describes a deterministic capability for a
content distributor to switch the content source that a player uses either at start-up or midstream, by means of a remote
steering service. The DASH implementation of Content Steering also supports the notion of a proxy steering server
which can switch a mobile client between broadcast and unicast sources.
dash-if content steering example is at https://reference.dashif.org/dash.js/latest/samples/advanced/content-steering.html
Example MPD used above: https://www.content-steering.com/bbb/playlist_steering_cloudfront_https.mpd
POC that I worked on using shaka packager and Expoplayer is mentioned in the issue at:
Dash-Industry-Forum/Content-Steering#17
Shaka packager branch: https://github.com/sr1990/shaka-packager/tree/content_steering1
As per above branch, the following command
will create mpd that contains the following elements
Location
BaseUrls
Content Steering
Shaka packager needs to add the following
a. baseurl support along with attributes
Content steering base urls are added using --content_steering_base_urls above but base url implementation needs to be extended to specify the following attributes:
Currently baseurl/s is added using --base_urls <comma_separated_urls> and does not support any of the above attributes.
I think support for only serviceLocation attribute should be added for now as --base_urls , same as --content_steering_base_urls mentioned above. Rest attributes can be added as needed.
b. Location
Right now there is no way to specify the mpd Location. Option similar to --content_steering_locations mentioned above should be added to specify Location.
c. ContentSteering element
As per the proposal above ContentSteering element = A URL that can be used to access the Content Steering
server. The URL points to a DASH Content Steering Manifest (DCSM) and has multiple attributes.
In the POC, I have added
--content_steering_url : which points to content steering server and
--content_steering_default_service_location : specifies attribute DefaultServiceLocation
--content_steering_query_before_start : specifies attribute queryBeforeStart.
I do not like the command line arguments that I have added but do not have a better idea.
Players supporting content steering:
Exoplayer: (not implemented yet)
google/ExoPlayer#11203
Useful links:
Unfortunately, I do not have time to work on this but can help with testing.
The text was updated successfully, but these errors were encountered: