MKD 10 00413 01 01 TechnicalNote DAI EncodingOnDemand RA
MKD 10 00413 01 01 TechnicalNote DAI EncodingOnDemand RA
Encoding On-Demand
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.
[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
Encoding Encoding
Remote On-Demand On-Demand CMS
storage server Controller
Transcoding process
Cue points parsing and
SCTE-35 generation
IDR insertion on conditioning
points
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.
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.
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.
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.
NOTE: In this example, the conditioning info start offset is relative to the response signal
(configurable option, see section 4.3.1)
Example:
action Specifies the “create” for both the start and end of the PO.
action to be
taken.
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:
segmentNum 0
segmentsExpected 0
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
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.
<!--
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>
<!--
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>
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"/>
<!-- 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.
<!-- 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"/>