0% found this document useful (0 votes)
100 views18 pages

MKD 10 00413 01 01 TechnicalNote DAI EncodingOnDemand RA

Uploaded by

gianniM0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
100 views18 pages

MKD 10 00413 01 01 TechnicalNote DAI EncodingOnDemand RA

Uploaded by

gianniM0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Video Processing

Encoding On-Demand

Technical Note: Dynamic Ad Insertion

Revision A
Legal Information

Copyright ©MediaKind 2019. All rights reserved. No part of this document may be
reproduced in any form without the written permission of the copyright
owner.

Disclaimer The contents of this document are subject to revision without notice due
to continued progress in methodology, design and manufacturing.
MediaKind shall have no liability for any error or damage of any kind
resulting from the use of this document.

Trademarks All trademarks mentioned herein are the property of their respective
owners. These are shown in the document Trademark Information.

VOD DAI – Technical Note 2 www.mediakind.com


Contents
1. Overview....................................................................................... 5
2. Introduction.................................................................................. 6
2.1. Configuration................................................................................... 7
2.1.1. Service ........................................................................................... 7
2.1.2. Job ................................................................................................. 8
3. Format specification...................................................................... 9
3.1. SignalProcessingNotification element .................................................11
3.2. ResponseSignal element (optional)....................................................12
3.3. ConditioningInfo element .................................................................16
3.3.1. Conditioning info start offset ............................................................17

VOD DAI – Technical Note 3 www.mediakind.com


Revision A
Table 1 – References
Reference Document name

[ESAM-IO3] OC-SP-ESAM-API-I03-131025, Real-time Event Signaling and Management API


Society of Cable Telecommunication Engineers
http://www.cablelabs.com/wp-content/uploads/specdocs/OC-SP-ESAM-API-I03-131025.pdf

[SCTE 35] ANSI/SCTE 35 2013, Digital Program Insertion Cueing Message for Cable
CableLabs
http://www.scte.org/documents/pdf/Standards/Top%20Ten/ANSI_SCTE%2035%202013.pdf

VOD DAI – Technical Note 4 www.mediakind.com


Revision A
1. Overview
The aim of this document is to introduce how to enable VOD Dynamic Ad Insertion (DAI) in
MediaKind Encoding On-Demand and to give a specification of the placement opportunity format
specification used for conditioning of VOD assets.

VOD DAI – Technical Note 5 www.mediakind.com


Revision A
2. Introduction
In order to enable VOD DAI, MediaKind Encoding On-Demand product can generate splice points and
insert IDR on user-defined placement opportunities.
The following diagram describes the workflow of the different components used in order to achieve
this:

Encoding Encoding
Remote On-Demand On-Demand CMS
storage server Controller

REST API: service creation


Config containing an
SCTE-35 Out-of-band
input stream

REST API: job creation


Config containing cue
Job creation on available server points description of
placement opportunities
Source Asset Ingest

Transcoding process
Cue points parsing and
SCTE-35 generation
IDR insertion on conditioning
points

Encoded Asset Publishing Job done notification

VOD DAI – Technical Note 6 www.mediakind.com


Revision A
2.1. Configuration

2.1.1. Service
The On-Demand service should contain one SCTE-35 input stream with Out-of-band source:

To enable IDR insertion on cue points, the stream conditioning parameter in video encoding settings
should be set to this SCTE-35 stream:

At the output level, the SCTE-35 can be passthru and/or converted to TTML for MediaKind packager.

VOD DAI – Technical Note 7 www.mediakind.com


Revision A
2.1.2. Job
The user-defined cue points are passed in the job creation request:

Cue points are described using an XML string (see format specification chapter below) coded in
base64. In REST API, it corresponds to the “daiMetadata” element of the job creation request. For
more information, refer to the documentation of the Job Manager REST API.

VOD DAI – Technical Note 8 www.mediakind.com


Revision A
3. Format specification
All the placement opportunities of the source asset are contained in a single
SignalProcessingNotification XML document (syntax described in section 8.5 of [ESAM-IO3]) that is
base64 encoded in job creation request.
Each PO is described with:
At most 2 optional ResponseSignal elements, in XML form, describing the start and end of the PO
(Binary form is also supported, but not described in this document).
A ConditioningInfo element used to condition the content at the Ad break boundaries.
The following example describes the minimal SignalProcessingNotification XML document used for an
asset containing a unique PO starting at 00:05:23.222 and ending at 00:05:53.353.

<?xml version="1.0" encoding="UTF-8"?>


<SignalProcessingNotification
xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1"
xmlns:sig="urn:cablelabs:md:xsd:signaling:3.0"
acquisitionPointIdentity="envivio.com/vod_po_source">
<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="P0Y0M0DT0H5M23.222S" duration="PT30.131S"/>
</SignalProcessingNotification>

If an SCTE-35 stream is required, ResponseSignal elements can be used to describe the SCTE-35
signals.
The following example describes the SignalProcessingNotification XML document used for an asset
containing a unique PO starting at 00:05:23.222 and ending at 00:05:53.353 with an SCTE-35 Splice
insert command.

<?xml version="1.0" encoding="UTF-8"?>


<SignalProcessingNotification
xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1"
xmlns:sig="urn:cablelabs:md:xsd:signaling:3.0"
acquisitionPointIdentity="envivio.com/vod_po_source">
<!--
Start of the PO
GUID for acquisitionSignalID : {F5FB0299-2B78-4A6B-8DF3-CCE779880B09}
GUID for signalPointID: {FBD66856-D14A-4CA4-B332-D1525BF6A124} =base64=> +9ZoVtFKTKSzMtFSW/ahJA==
-->

VOD DAI – Technical Note 9 www.mediakind.com


Revision A
<ResponseSignal acquisitionSignalID="F5FB02992B784A6B8DF3CCE779880B09"
signalPointID="+9ZoVtFKTKSzMtFSW/ahJA==" action="create">
<sig:NPTPoint nptPoint="323.222"/>
<sig:SCTE35PointDescriptor spliceCommandType="5">
<!-- Placement Opportunity Start Splice insert -->
<sig:SpliceInsert spliceEventID="1" outOfNetworkIndicator="true" duration="PT30.131S"/>
</sig:SCTE35PointDescriptor>
</ResponseSignal>
<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="PT0S" acquisitionSignalIDRef="F5FB02992B784A6B8DF3CCE779880B09"
duration="PT30.131S"/>
</SignalProcessingNotification>

NOTE: In this example, the conditioning info start offset is relative to the response signal
(configurable option, see section 4.3.1)

The following example describes the SignalProcessingNotification XML document used for an asset
containing a unique PO starting at 00:05:23.222 and ending at 00:05:53.353 with SCTE-35 time
signal commands.

<?xml version="1.0" encoding="UTF-8"?>


<SignalProcessingNotification
xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1"
xmlns:sig="urn:cablelabs:md:xsd:signaling:3.0"
acquisitionPointIdentity="envivio.com/vod_po_source">
<!--
Start of the PO
GUID for acquisitionSignalID : {F5FB0299-2B78-4A6B-8DF3-CCE779880B09}
GUID for signalPointID: {FBD66856-D14A-4CA4-B332-D1525BF6A124} =base64=> +9ZoVtFKTKSzMtFSW/ahJA==
-->

VOD DAI – Technical Note 10 www.mediakind.com


Revision A
<ResponseSignal acquisitionSignalID="F5FB02992B784A6B8DF3CCE779880B09"
signalPointID="+9ZoVtFKTKSzMtFSW/ahJA==" action="create">
<sig:NPTPoint nptPoint="323.222"/>
<!-- Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<!-- Placement Opportunity Start Time signal -->
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="52" segmentNum="0"
segmentsExpected="0" upidType="9"
upid="5349474e414c3a2b395a6f5674464b544b537a4d744653572f61684a413d3d"
/>
<!-- UPID is hex encoding of Signal ID "SIGNAL:+9ZoVtFKTKSzMtFSW/ahJA==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>
<!--
End of the PO
GUID for acquisitionSignalID : {6B0488A1-F0A4-49A0-8976-82E2B90C0053}
GUID for signalPointID: {553CE28D-C4B8-49BA-BB4E-D4A3BB08972F} =base64=> VTzijcS4Sbq7TtSjuwiXLw==
-->
<ResponseSignal acquisitionSignalID="6B0488A1F0A449A0897682E2B90C0053"
signalPointID="VTzijcS4Sbq7TtSjuwiXLw==" action="create">
<sig:NPTPoint nptPoint="353.353"/>
<!-- Placement Opportunity End Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="53" segmentNum="0"
segmentsExpected="0"
upidType="9"
upid="5349474e414c3a56547a696a635334536271375474536a757769584c773d3d" />
<!-- UPID is hex encoding of Signal ID "SIGNAL:VTzijcS4Sbq7TtSjuwiXLw==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>
<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="PT0S" acquisitionSignalIDRef="F5FB02992B784A6B8DF3CCE779880B09"
duration="PT30.131S"/>
</SignalProcessingNotification>

NOTE: In this example, the conditioning info start offset is relative to the response signal
(configurable option, see section 4.3.1)

3.1. SignalProcessingNotification element


The SignalProcessingNotification is the root of the document. It contains the set of ResponseSignal
and ConditioningInfo elements (see chapter 8.3.3.2 of [SCTE35]).

VOD DAI – Technical Note 11 www.mediakind.com


Revision A
Attribute Description Value

acquisitionPointIdentity A required string, typically a system-wide “<providerID>/<assetID>”


unique string, identifying the transcoder at a
specific site on a specific channel/network feed.

Example:

<?xml version="1.0" encoding="UTF-8"?>


<SignalProcessingNotification
xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1"
xmlns:sig="urn:cablelabs:md:xsd:signaling:3.0"
acquisitionPointIdentity="envivio.com/vod_po_source">
</SignalProcessingNotification>

3.2. ResponseSignal element (optional)


Each PO can be described with at most two optional ResponseSignal elements in XML form (Binary
form is also supported, but not described in this document). If no SCTE-35 stream is expected in the
generated asset, ResponseSignal elements are not required.
The first ResponseSignal element describes the start position of the PO and the second one (if any)
describes the position of the end of the PO.

Attribute Description Value

acquisitionSignalID GUID, different for each ResponseSignal

action Specifies the “create” for both the start and end of the PO.
action to be
taken.

signalPointID Unique GUID encoded in base64, different for each


identifier for ResponseSignal
each signal

The position of each signal is represented with a NPTPoint element which represent the offset from
the beginning of the asset. It is expressed in milliseconds units. NPT 0, used for instance for pre-roll,
is represented with an NPT value of “BOS”.
The encapsulated SCTE-35 signal can be either a time_signal or a splice_insert, depending on the
expected SCTE-35 commands. As a result, it will contain a SCTE35PointDescriptor sub-tree (XML
form – described in section 8.4.1.2 of [ESAM-IO3]) that contains either a SegmentationDescriptorInfo
sub-tree or a SpliceInsert sub-tree (described in section 8.4.1.2.1 of [ESAM-IO3]) with the following
attributes:

Attribute Case Description Value

spliceCommandType All Splice command type. 2 possible values:


Described in [SCTE 35] table “05” : 0x05 splice_insert
7-2 “06” : 0x06 time_signal

VOD DAI – Technical Note 12 www.mediakind.com


Revision A
Attribute Case Description Value

segmentTypeID Time_signal Type of segmentation. “52” (0x34) : Placement


Opportunity Start, for the start
Described in [SCTE 35] table
of the PO
8-8
“53” (0x35) : Placement
Opportunity End, for the end of
the PO

segmentEventID A 32-bit unique segmentation Identifier different for each PO.


event identifier. Described in
Should be the same value for the
[SCTE 35] section 8.3.3.5
start and the end of the PO

segmentNum 0

segmentsExpected 0

upidType Upid type “9” (0x09) ADI - CableLabs


metadata identifier as defined in
Section 8.3.3.2 of [SCTE 35]

upid ID Hex encoding of


"SIGNAL:” + signalPointID

outOfNetworkIndicator Splice_insert The value of true indicates the “true” for the start of the PO
opportunity to exit
“false” for the end of the PO
from the network feed. When
set
to the value of false, the
signal point
indicates an opportunity to
return to the network feed

spliceEventID A 32-bit unique splice event Identifier, different for each


identifier. Splice insert command.
Described in [SCTE 35]
7.3.2.1

duration duration of the Ad break Duration of the PO, in ISO


formatting.
E.g.: PT1M0S

NOTE: In case of Splice_insert(), the duration is used to indicate the end of the PO. Therefore, a
single ResponseSignal element is required

NOTE: In case of time_Signal(), the duration can be omitted or set to 0 for a single time signal
event. If omitted, the segmentation_duration_flag will be set to 0 in the
segmentation_descriptor of the time_signal packet. If set to 0, the
segmentation_duration_flag will be set to 1 and the segmentation_duration value
will be 0.

VOD DAI – Technical Note 13 www.mediakind.com


Revision A
Example:
For a PO starting at 00:05:23.222 and ending at 00:05:53.353, represented with a Splice_Insert()
element, we would have:

<!--
Start of the PO
GUID for acquisitionSignalID : {F5FB0299-2B78-4A6B-8DF3-CCE779880B09}
GUID for signalPointID: {FBD66856-D14A-4CA4-B332-D1525BF6A124} =base64=> +9ZoVtFKTKSzMtFSW/ahJA==
-->
<ResponseSignal acquisitionSignalID="F5FB02992B784A6B8DF3CCE779880B09"
signalPointID="+9ZoVtFKTKSzMtFSW/ahJA==" action="create">
<sig:NPTPoint nptPoint="323.222"/>
<!-- Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<!-- Placement Opportunity Start Time signal -->
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="52" segmentNum="0"
segmentsExpected="0" upidType="9"
upid="5349474e414c3a2b395a6f5674464b544b537a4d744653572f61684a413d3d" />
<!-- UPID is hex encoding of Signal ID "SIGNAL:+9ZoVtFKTKSzMtFSW/ahJA==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>
<!--
End of the PO
GUID for acquisitionSignalID : {6B0488A1-F0A4-49A0-8976-82E2B90C0053}
GUID for signalPointID: {553CE28D-C4B8-49BA-BB4E-D4A3BB08972F} =base64=> VTzijcS4Sbq7TtSjuwiXLw==
-->
<ResponseSignal acquisitionSignalID="6B0488A1F0A449A0897682E2B90C0053"
signalPointID="VTzijcS4Sbq7TtSjuwiXLw==" action="create">
<sig:NPTPoint nptPoint="353.353"/>
<!-- Placement Opportunity End Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="53" segmentNum="0"
segmentsExpected="0"
upidType="9"
upid="5349474e414c3a56547a696a635334536271375474536a757769584c773d3d" />
<!-- UPID is hex encoding of Signal ID "SIGNAL:VTzijcS4Sbq7TtSjuwiXLw==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>

VOD DAI – Technical Note 14 www.mediakind.com


Revision A
Example:
For a PO starting at 00:05:23.222 and ending at 00:05:53.353, represented with time_signal
elements, we would have:

<!--
Start of the PO
GUID for acquisitionSignalID : {F5FB0299-2B78-4A6B-8DF3-CCE779880B09}
GUID for signalPointID: {FBD66856-D14A-4CA4-B332-D1525BF6A124} =base64=> +9ZoVtFKTKSzMtFSW/ahJA==
-->
<ResponseSignal acquisitionSignalID="F5FB02992B784A6B8DF3CCE779880B09"
signalPointID="+9ZoVtFKTKSzMtFSW/ahJA==" action="create">
<sig:NPTPoint nptPoint="323.222"/>
<!-- Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<!-- Placement Opportunity Start Time signal -->
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="52" segmentNum="0"
segmentsExpected="0" upidType="9"
upid="5349474e414c3a2b395a6f5674464b544b537a4d744653572f61684a413d3d" />
<!-- UPID is hex encoding of Signal ID "SIGNAL:+9ZoVtFKTKSzMtFSW/ahJA==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>

<!--
End of the PO
GUID for acquisitionSignalID : {6B0488A1-F0A4-49A0-8976-82E2B90C0053}
GUID for signalPointID: {553CE28D-C4B8-49BA-BB4E-D4A3BB08972F} =base64=> VTzijcS4Sbq7TtSjuwiXLw==
-->
<ResponseSignal acquisitionSignalID="6B0488A1F0A449A0897682E2B90C0053"
signalPointID="VTzijcS4Sbq7TtSjuwiXLw==" action="create">
<sig:NPTPoint nptPoint="353.353"/>
<!-- Placement Opportunity End Time signal -->
<sig:SCTE35PointDescriptor spliceCommandType="6">
<sig:SegmentationDescriptorInfo segmentEventID="1" segmentTypeID="53" segmentNum="0"
segmentsExpected="0"
upidType="9"
upid="5349474e414c3a56547a696a635334536271375474536a757769584c773d3d" />
<!-- UPID is hex encoding of Signal ID "SIGNAL:VTzijcS4Sbq7TtSjuwiXLw==" -->
</sig:SCTE35PointDescriptor>
</ResponseSignal>

VOD DAI – Technical Note 15 www.mediakind.com


Revision A
3.3. ConditioningInfo element
Each PO must also have a ConditioningInfo element (described in section 8.5.1.3 of [ESAM-IO3]),
telling the transcoder how to condition the PO. The conditioningInfo can be used to:
Generated I/IDR frames at the PO start and stop
Split the Ad break into smaller segments (Not used).

Attribute Description Value

acquisitionSignalIDRef reference to the If there is a ResponseSignal element for the start


acquisitionsignalID of the PO, the expected value is the same as its
identifying the acquisitionsignalID value.
starting point for the
conditioning info
Otherwise this attribute must not be used

startOffset An ISO Duration Described in section 4.3.1


indicating the
chronological order of
the conditioning
points

duration An ISO Duration Duration of the PO, in ISO formatting.


encoded total signal
Ex: PT1M0S
region duration,
typically a
break/pod/avail
duration, suggesting
where the transcoder
should create an
I/IDR frame for a
seamless splice return

NOTE: As a single segment is required for each PO, it is not necessary to list the segments inside
of the ConditioningInfo element.

NOTE: In case of time signal event, the duration attribute can be omitted or set to 0s.

Example:
Condition Info when a response signal is used to reference the PO start (case where the start offset is
relative to the response signal)

<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="PT0S" acquisitionSignalIDRef="F5FB02992B784A6B8DF3CCE779880B09"
duration="PT30.131S"/>

Example:
Condition info when no Response signal elements are used

<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="P0Y0M0DT0H5M23.222S" duration="PT30.131S"/>

VOD DAI – Technical Note 16 www.mediakind.com


Revision A
3.3.1. Conditioning info start offset
If a response signal is referenced in the attribute acquisitionSignalIDRef, the startOffset value
depends on the start offset mode chosen.
By default, the start offset is relative to the response signal. In this case, in order to generate an IDR
at the position of the response signal, “PTS0S” is expected.
Example:

<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="PT0S" acquisitionSignalIDRef="F5FB02992B784A6B8DF3CCE779880B09"
duration="PT30.131S"/>

In order to have the start offset relative to the beginning of the asset, the following advanced
parameter needs to be set

spliceInserter.vod.conditioningInfoStartOffsetRelativeToResponseSignal=false

In this case, in order to create an IDR at the position of the response signal, the start offset needs to
contain the position of the PO.

VOD DAI – Technical Note 17 www.mediakind.com


Revision A
Example:

<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="P0Y0M0DT0H5M23.222S"
acquisitionSignalIDRef="F5FB02992B784A6B8DF3CCE779880B09" duration="PT30.131S"/>

If no response signals are referenced by the conditioning info, the start offset is relative to the
beginning of the asset.
Example:

<!-- Conditioning Info with one segment that lasts the whole PO duration -->
<ConditioningInfo startOffset="P0Y0M0DT0H5M23.222S" duration="PT30.131S"/>

VOD DAI – Technical Note 18 www.mediakind.com


Revision A

You might also like