Overview
The most important use case of a streaming app is to play the content that has been selected by the user. This section describes how to identify and play the correct content.
The steps that the client performs to start playout are as follows:
-
Identify the content to be played. The client does this by getting the following for the item that the user selects (media card, rail item, or a channel in the EPG):
-
Content ID
-
Playout URL
-
-
Get the playout parameters. There are two ways to do this, depending on the security features in your deployment:
-
If your deployment uses SSP’s Advanced Security Protection (ASP) mechanisms, make a call to URL Builder to get the content auth token, the playout URL, and any other tokens that are required (e.g., CDN token, watermarking token, etc.).
-
If your deployment does not use SSP’s ASP mechanisms, make a call to IAS to get the content auth token.
In this case, the client uses the playout URL from step 1, above.
-
-
Pass the playout URL, the licence server URL, and the content auth token to the player. The player uses this to get:
-
The manifest
-
The first media segment
-
The content license
-
A DRM challenge
-
-
Create an SSM session. SSM enforces concurrent session limits and will return an error if creating this session would exceed any limits.
-
Once playout has started, the client must:
-
Send regular keep-alive calls to SSM.
-
Report all activity to UAV for reporting purposes.
-
-
When playout ends, the client must tear down the SSM session.
When the app plays content, it must report playback events to User Activity Vault – see Report watch events.
If it does not, many of the reports available through OpenTV Analytics will not work.
If the client uses the Bitmovin player, the client application must:
-
Initialise the player with analytics enabled.
-
Specify the following in the
DefaultMetadata,SourceMetadata, or player configuration as appropriate:-
customUserId– the OPF account ID -
title– the title of the content -
videoId– the ID of the content
-
See the Bitmovin Collector documentation for more details.
Identifying the content to be played
MDS metadata is filtered by the deviceType field. The value filtered on is device-specific to ensure that it is DASH or HLS; DASH content uses Widevine encryption, HLS content uses Fairplay.
Service
https://server:port/metadata/delivery/GLOBAL/btv/services?filter={"locale":"en_GB","deviceType":{"$in":["Chrome"]}}
VOD editorial
https://server:port/metadata/delivery/GLOBAL/vod/editorials?filter={"editorial.id":{"$in":["GLOBAL_20711_20190515010000"]},"technical.deviceType":{"$in":["Chrome"]}}
Retrieving the DRM id
For encrypted content, the MDS metadata provides a unique DRM id used as internal reference for further playback operations. This field needs to be received and stored on client side when acquiring metadata. An example can be seen with following URL:
https://server:port/metadata/delivery/GLOBAL/btv/services?filter={"locale":"en_GB","deviceType":{"$in":["Chrome"]}}&fields=["technical.drmId"]
Fetching the content token
To fetch the content token, the following example should be used before playback:
https://server:port/ias/v2/content_token?content_id=TEN900-CH015-DASH_1&type=device
See also
If you are using OpenTV Player, see also: