Single-stage LTCU workflow without JITP
Overview
OpenTV Video Platform supports singlr-stage LTCU workflows JITP, such as those used with Harmonic VOS360. It also includes an adaptor for Harmonic VOS360.
The following diagram shows the main interactions between the Content Workflow Manager (CWM), the Business Configuration Manager (BCM), the external encoder/packager, the CDN, and so on for the single-stage LTCU workflow:
Main steps
Setting up an LTCU workflow consists of the following main stages, which are explained in detail in the following sections:
Integration
Specify the required devices
Specify the processing device
To specify the processing device:
Construct the request payload so that it looks like this:
CODE{ "id": "LiveEncoderDevice", "name": "CapturedAssetService", "workflow": { "pendingJobs": 0, "maxJobsAllowed": 10, "accessPoints": [ { "endPoint": "http://<IP>:<Port>/cxf/pri/v1/", "type": "http" } ] } }
The full list of fields is available in Device attributes.
Send a POST request to the BCM's devices API with the above payload:
https://<host>:<port>/businessConfig/admin/v1/devices/
Specify the destination device
To specify the destination device:
Construct the request payload so that it looks like this:
CODE{ "id": "VOS_CDN", "name": "destination", "workflow": { "accessPoints": [ { "endPoint": "ftp://<UserName>:<Password>@<remote_address>:<Port>/relative_path/", "type": "ftp" }, { "endPoint": "http://<IP>:<Port>/cxf/pri/v1/", "type": "http" } ], "pendingJobs": 0, "maxJobsAllowed": 10 } }
The full list of fields is available in Device attributes.
Send a POST request to the BCM's devices API with the above payload:
https://<host>:<port>/businessConfig/admin/v1/devices/
Configure and attach the required profiles
To enable automatic retry of failed jobs, include the following attributes in capture, validation, and purge profiles:
autoRetry
– set totrue
to enable automatic retry. Default:false
.rescheduleDelay
– specifies how long (in seconds) to wait after failure before retrying the job. Default: 3600.numberOfRetriesForRescheduling
– the maximum number of times the job will be retried. Default: 3.channelBuffer
– specifies the time period in the past (in seconds) that the event must exist in for it to be captured. For example, if you set this to 86400, only events whose start time was in the last 24 hours will have their capture retried. Capture will not be retried for events that are older than 24 hours. Default: events' age is not considered – all failed jobs are retried.
Configure a feature profile
A feature profile is required when using just-in-time processing (JITP), to specify the encoding type (HLS, DASH, or SS). To configure a feature profile:
Construct a feature profile. See Harmonic VOS360 LTCU profiles for an example.
The full list of fields is available in Profile attributes.Attach the profile to the technical channel by sending a PUT request to the Content and Product Manager (CPM):
http://<server>:<port>/cpm/content/v1/technicalChannels/{technicalChannelId}
The body of the request must contain the field to be updated, in this case,
profileIdSets
. It must contain the IDs of all the profiles for the technical channel. So the recommended approach is to use a Get technical channel request to get the technical channel and find out the current value ofprofileIdSets
, add the ID of the new profile, then use this extended value in the body of the PUT request.For example, if the current value is
"capture;purge"
, to add thejitp_features_ss
ID, the request body should be:CODE{ profileIdSets: "capture;purge;jitp_features_ss" }
Alternatively, you can assign a profile to a technical channel at ingest, by specifying the profile IDs in the
profileIds
attribute of thetechnicalChannel
. See technicalChannel (technical-based).
Configure a capture profile
To configure a capture profile:
Construct a capture profile. See Harmonic VOS360 LTCU profiles for an example.
The full list of fields is available in Profile attributes.Attach the profile to the technical channel by sending a PUT request to the Content and Product Manager (CPM):
http://<server>:<port>/cpm/content/v1/technicalChannels/{technicalChannelId}
The body of the request must contain the field to be updated, in this case,
profileIdSets
. It must contain the IDs of all the profiles for the technical channel. So the recommended approach is to use a Get technical channel request to get the technical channel and find out the current value ofprofileIdSets
, add the ID of the new profile, then use this extended value in the body of the PUT request.For example, if the current value is
"jitp_features_ss;purge"
, to add thecapture
ID, the request body should be:CODE{ profileIdSets: "jitp_features_ss;purge;capture" }
Alternatively, you can assign a profile to a technical channel at ingest, by specifying the profile IDs in the
profileIds
attribute of thetechnicalChannel
. See technicalChannel (technical-based).
Configure a validation profile
To configure a validation profile:
Construct a validation profile. See Harmonic VOS360 LTCU profiles for an example.
The full list of fields is available in Profile attributes.Attach the profile to the technical channel by sending a PUT request to the Content and Product Manager (CPM):
http://<server>:<port>/cpm/content/v1/technicalChannels/{technicalChannelId}
The body of the request must contain the field to be updated, in this case,
profileIdSets
. It must contain the IDs of all the profiles for the technical channel. So the recommended approach is to use a Get technical channel request to get the technical channel and find out the current value ofprofileIdSets
, add the ID of the new profile, then use this extended value in the body of the PUT request.For example, if the current value is
"jitp_features_ss;purge"
, to add thevalidate
ID, the request body should be:CODE{ profileIdSets: "jitp_features_ss;purge;validate" }
Alternatively, you can assign a profile to a technical channel at ingest, by specifying the profile IDs in the
profileIds
attribute of thetechnicalChannel
. See technicalChannel (technical-based).
Configure a purge profile
To configure a feature profile:
Construct a purge profile. See Harmonic VOS360 LTCU profiles for an example.
The full list of fields is available in Profile attributes.Attach the profile to the technical channel by sending a PUT request to the Content and Product Manager (CPM):
http://<server>:<port>/cpm/content/v1/technicalChannels/{technicalChannelId}
The body of the request must contain the field to be updated, in this case,
profileIdSets
. It must contain the IDs of all the profiles for the technical channel. So the recommended approach is to use a Get technical channel request to get the technical channel and find out the current value ofprofileIdSets
, add the ID of the new profile, then use this extended value in the body of the PUT request.For example, if the current value is
"jitp_features_ss;capture"
, to add thepurge
ID, the request body should be:CODE{ profileIdSets: "jitp_features_ss;capture;purge" }
Alternatively, you can assign a profile to a technical channel at ingest, by specifying the profile IDs in the
profileIds
attribute of thetechnicalChannel
. See technicalChannel (technical-based).
Enabling/disabling LTCU for channels/events
There are three ways to enable or disable LTCU at the channel and event level.
Enabling LTCU for a channel enables it for all the channel's events, while disabling it for a channel disables it for all the channel's events. Enabling/disabling LTCU for an event overrides the setting at the channel level. Similarly, enabling or disabling LTCU for a technical channel overrides the setting for the editorial channel.
These three methods are explained in the following sections:
Enabling/disabling LTCU at ingest
To enable LTCU at ingest for a channel:
- To enable LTCU for a channel and all of its existing events:
- Set
cmsData
>editorialChannel
>channelEvents
>timeShifting
>longTermCatchUpSupport
totrue
(or set it to false to disable LTCU). - Set
cmsData
>technicalChannel
>timeShifting
>longTermCatchUpSupport
totrue
for each technical channel (or set it to false to disable LTCU). Optionally, specify guard times by setting
cmsData
>editorialChannel
>guardTime
>start
andend
. Values are in ISO 8601 format with a restricted allowed pattern ofPnDTnHnMnS
. For example"PT30M"
specifies a thirty-minute offset.Note that these guard times are used for both LTCU and NPVR.
- Set
- To enable LTCU for all newly-created events in a channel set
cmsData
>editorialChannel
>timeShifting
>longTermCatchUpParameters
totrue
(or set it to false to disable LTCU). - To enable LTCU for an individual event, set
cmsData
>editorialChannel
>channelEvents
>event
>timeShifting
>longTermCatchUpSupport
totrue
(or set it to false to disable LTCU).
Examples
Enabling/disabling LTCU using the CPM APIs
To enable/disable LTCU for channels/events that have already been ingested:
- To enable/disable LTCU for a channel and all of its existing and newly-created events:
- Send a PUT request to:
https://<host>:<port>/cpm/content/v1/editorialChannels/{editorialChannelId}
The payload should contain the following (for enable – for disable, set the value to
false
):CODE{ "timeshifting" : { "longTermCatchUpSupport": true, "longTermCatchUpParameters": { "eventDefaultFlag": true } } }
Optionally, you can enable guard times by specifying
"guardTimeStart"
and"guardTimeEnd"
as siblingsof "timeshifting"
. Values are in ISO 8601 format with a restricted allowed pattern ofPnDTnHnMnS
. For example"PT30M"
specifies a thirty-minute offset.Note that these guard times are used for both LTCU and NPVR. - Send a PUT request to:
https://<host>:<port>/cpm/content/v1/technicalChannels/{technicalChannelId}
The payload should contain the following (for enable – for disable, set the value to
false
):CODE{ "timeshifting" : { "longTermCatchUpSupport": true } } }
- Send a PUT request to:
To enable/disable LTCU for an event, send a PUT request to:
https://<host>:<port>/cpm/content/v1/events/{eventId}
The payload should contain the following (for enable – for disable, set the value to
false
):CODE{ "timeshifting" : { "longTermCatchUpSupport": true } } }
Enabling LTCU using OpCon
See:
Specify the node that captured events are assigned to
If you are using ION as your client app and want to be able to create a section in ION to display LTCU content or to promote such content in ION, you must specify a node that captured LTCU events will be assigned to.
To do this:
- Create a root node in OpCon, as explained in Configuring nodes.
- Name the root node
CUParentNodeId
.
Once you have created this node, a node will be automatically created for each channel for which LTCU is enabled, and the captured events will be added to the appropriate channel's node.