使用會話變量 - AWS Elemental MediaTailor

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用會話變量

若要設定 AWS Elemental MediaTailor 若要將工作階段資料傳送至「廣告決策伺服器」(ADS) ADSURL,請在範本中指定本節中列出的一或多個變數。您可以使用單個變量,並且可以連接多個變量以創建單個值。 MediaTailor 生成一些值,並從清單和播放器的會話初始化請求等源獲取其餘值。

下表說明您可以在範本ADS要求URL組態中使用的 Session 資料變數。表格中列出的區段號碼對應於 2019a 版本的有線電信工程師協會 (SCTE) -35 規格,數位程式插入提示纜線訊息,如需有關廣告預先擷取的詳細資訊,請參閱。預取廣告

名稱 適用於廣告預取 SCTE-35 規格部分 描述
[avail.index] 代表廣告在索引中可用位置的數字。在播放工作階段開始時,會在資訊清單中 MediaTailor 建立所有廣告可用的索引,並儲存工作階段剩餘部分的索引。當向填補 MediaTailor 可用性ADS提出請求時,它包括廣告可用索引號。此參數可讓您使ADS用競爭排除和展示頻率上限等功能來改善廣告選擇。
[avail.random] 一個介於 0 到 10,000,000,000 之間的隨機數字,作為一個長數字, MediaTailor 會為每個請求產生。ADS有些廣告伺服器使用此參數來啟用功能,例如區隔競爭公司的廣告。
[scte.archive_allowed_flag] 10.3.3.1 一個可選的布爾值。當此值為 0 時,會在區段上宣告記錄限制。當此值為 1 時,不會在區段上宣告記錄限制。
[scte.avail_num] 9.7.2.1 由 SCTE -35 字段解析 MediaTailor 的值avail_num,作為一個長數字。 MediaTailor 可以使用此值來指定線性廣告可用數字。
[scte.avails_expected] 9,7.2.1 一個可選的 long 值,給出當前事件中的可用性的預期計數。
[scte.delivery_not_restricted_flag] 10.3.3.1 一個可選的布爾值。當這個值為 0 時,接下來的五個位元會被保留。當此值為 1 時,接下來的五個位元會採用 SCTE -35 規格中所述的含義。
[scte.device_restrictions] 10.3.3.1 一個可選的整數值,用於表示三個預先定義的、獨立的和非階層的裝置群組。如需有關此變數的詳細資訊,請參閱 -35 規格中的段預期描述。SCTE
[scte.event_id]
9.1 和 由 SCTE -35 字段解析 MediaTailor 的值splice_event_id,作為一個長數字。 MediaTailor 使用此值來指定線性廣告可用數字,或填入廣告伺服器查詢字串,例如廣告網繭位置。
[scte.no_regional_blackout_flag] 10.3.3.1 一個可選的布爾值。當此值為 0 時,區域中斷限制會套用至區段。當此值為 1 時,區域中斷限制不會套用至區段。
[scte.segment_num] 10.3.3.1 一個可選的整數值,用於對區段集合中的區段進行編號。如需有關此變數的詳細資訊,請參閱 -35 規格中的段目 SCTE _num 說明。
[scte.segmentation_event_id] 10.3.3.1 MediaTailor 將此變數公開為scte.event_id
[scte.segmentation_type_id] 10.3.3.1 選擇性的 8 位元整數值,指定分割類型。如需有關此變數的詳細資訊,請參閱 -35 規格中的區段類型 _id 說明。SCTE
[scte.segmentation_upid]

segmentation_upid_type:是

private_data:是

分段更新 (_3):10.3.3.1

私有管理UPID:

對應於 SCTE -35 segmentation_upid 元素。元segmentation_upid素包含segmentation_upid_typesegmentation_upid_length

MediaTailor 支援下列segmentation_upid類型:

  • ADS信息(0x0E)-廣告信息。如需詳細資訊,請參閱 -35 規格中的區段 _upid 說明。SCTE

  • 受管理的專用 UPID (0x0C)-如 SCTE -35 規格中所定義的受管理專用 UPID (MPU) 結構。 MediaTailor 支持二進制或DASHXMLSCTE表示。

    您可以在播客管理員工作流程中使用此結構。若要這麼做,請指定 32 位元 (4 位元組)format_identifier,並在private_data屬性中包含下列參數:

    ABCD{"assetId":"my_program","cueData":{"cueType":"theAdType","key":"pb","value":"123456"}}

    MediaTailor 剖析前一個值JSON,並將它們傳遞至scte.segmentation_upid.assetIdscte.segmentation_upid.cueData.key、和scte.segmentation_upid.cueData.value動態變數。

  • 使用者定義 (0x01)-使用者定義的結構。如需詳細資訊,請參閱 -35 規格中的區段 _upid 說明。SCTE

[scte.segmentation_upid.assetId] 與「受管理的私有」UPID (0xC) 搭配使用,以用segmentation_ upid_type於播客管理工作流程。 MediaTailor從private_dataJSON結構中MPU的assetId參數衍生出此值。如需詳細資訊,請參閱「Managed Private UPID JSON structure for a podbuster workflow」。
[scte.segmentation_upid.cueData.key] 與「受管理的私有」UPID (0xC) 搭配使用,以用segmentation_ upid_type於播客管理工作流程。 MediaTailor從private_dataJSON結構中MPU的cueData.key參數衍生出此值。如需詳細資訊,請參閱「Managed Private UPID JSON structure for a podbuster workflow」。
[scte.segmentation_upid.cueData.value] 與「受管理的私有」UPID (0xC) 搭配使用,以用segmentation_ upid_type於播客管理工作流程。 MediaTailor從private_dataJSON結構中MPU的cueData.key參數衍生出此值。如需詳細資訊,請參閱「Managed Private UPID JSON structure for a podbuster workflow」。
[scte.segments_expected] 10.3.3.1 選用的整數值,提供區段集合中個別區段的預期計數。如需有關此變數的詳細資訊,請參閱 -35 規格中的段預期描述。SCTE
[scte.sub_segment_num] 10.3.3.1 一個可選的整數值,用於識別子段集合中的特定子段。如需有關此變數的詳細資訊,請參閱 -35 規格中的子區段 _num 說明。SCTE
[scte.sub_segments_expected] 10.3.3.1 選用的整數值,提供子區段集合中個別子區段的預期計數。如需有關此變數的詳細資訊,請參閱 -35 規格中的子區段預期描述。SCTE
[scte.unique_program_id] 9.7.2.1 MediaTailor 從 SCTE -35 splice_insert 欄位剖析的整數值。unique_program_id會ADS使用唯一的程式 ID (UPID) 為即時線性串流提供程式層級廣告鎖定目標。如果 SCTE -35 指令不是接合插入,請將此值 MediaTailor 設定為空值。
[session.avail_duration_ms]

廣告可用性位置的持續時間 (以毫秒為單位)。預設值為 30 萬毫秒。 AWS Elemental MediaTailor 從輸入清單中獲得持續時間值,如下所示:

  • ForHLS:從#EXT-X-DATERANGE標籤中的值#EXT-X-CUE-OUT: DURATION或 MediaTailor 取得持續時間。如果輸入資訊清單在這些標記中的廣告可用期間為空、無效或 0,請 MediaTailor 使用預設值。

  • ForDASH:從事件持續時間 MediaTailor 取得持續時間值 (如果已指定)。否則,它會使用預設值。

  • 針對VOD:當VOD串流觸發前段廣告呼叫時,如果資訊清單不包含具有持續時間值的SCTE訊息,則 MediaTailor 不會輸入 [session.avail_duration_ms] 的持續時間,包括預設持續時間值。

[session.avail_duration_secs] 廣告可用性插槽或廣告可用性的持續時間 (以秒為單位) 四捨五入至最接近的秒數。 MediaTailor 確定這個值的方式與它確定的相同方式[session.avail_duration_ms]
[session.client_ip] MediaTailor 要求來源的遠端 IP 位址。如果已設定X-forwarded-for標頭,則該值就是 MediaTailor 用於client_ip.
[session.id] 目前播放工作階段的唯一數字識別碼。玩家對工作階段所發出的所有要求都有相同的 ID,因此可用於將要求與單一檢視相關聯的ADS欄位。
[session.referer] 通常,託管視頻播放器URL的頁面。 MediaTailor 將此變量設置為播放器在其請求中使用的Referer標題的值 MediaTailor。如果播放程式未提供此標題,請將其保 MediaTailor留[session.referer]空白。如果您在資訊清單端點前面使用內容傳遞網路 (CDN) 或 Proxy,並且希望顯示此變數,請從這裡的播放器代理正確的標頭。
[session.user_agent] 從播放器的工作階段初始化要求 MediaTailor 接收到的User-Agent標頭。如果您在清單端點前面使用CDN或代理,則必須從此處的播放器代理正確的標頭。
[session.uuid]

替代[session.id]. 這是目前播放工作階段的唯一識別符,例如以下:

e039fd39-09f0-46b2-aca9-9871cc116cde

如果ADS需要名為deviceSession的查詢參數與唯一的會話標識符一起傳遞,則模板 ADS URL AWS Elemental MediaTailor 可能如下所示:

https://my.ads.server.com/path?deviceSession=[session.id]

AWS Elemental MediaTailor 會自動為每個串流產生唯一識別碼,並輸入識別碼來取代session.id。如果標識符是1234567,則對的 MediaTailor 最終請求ADS將如下所示:

https://my.ads.server.com/path?deviceSession=1234567

如果ADS需要傳遞數個查詢參數,則模板 ADS URL AWS Elemental MediaTailor 可能如下所示:

https://my.ads.server.com/sample?e=[scte.avails_expected]&f=[scte.segment_num]&g=[scte.segments_expected]&h=[scte.sub_segment_num]&j=[scte.sub_segments_expected]&k=[scte.segmentation_type_id]

下面的DASH標記示例XML片段展示了如何使用scte35:SpliceInsert

<Period start="PT444806.040S" id="123456" duration="PT15.000S"> <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"> <Event duration="1350000"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="180832" tier="4095"> <scte35:SpliceInsert spliceEventId="1234567890" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1"> <scte35:Program><scte35:SpliceTime ptsTime="5672624400"/></scte35:Program> <scte35:BreakDuration autoReturn="true" duration="1350000"/> </scte35:SpliceInsert> </scte35:SpliceInfoSection>

下面的DASH標記示例XML片段展示了如何使用scte35:TimeSignal

<Period start="PT346530.250S" id="123456" duration="PT61.561S"> <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"> <Event duration="5310000"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="183003" tier="4095"> <scte35:TimeSignal> <scte35:SpliceTime ptsTime="3442857000"/> </scte35:TimeSignal> <scte35:SegmentationDescriptor segmentationEventId="1234567" segmentationEventCancelIndicator="false" segmentationDuration="8100000" segmentationTypeId="52" segmentNum="0" segmentsExpected="0"> <scte35:DeliveryRestrictions webDeliveryAllowedFlag="false" noRegionalBlackoutFlag="false" archiveAllowedFlag="false" deviceRestrictions="3"/> <scte35:SegmentationUpid segmentationUpidType="12" segmentationUpidLength="2">0100</scte35:SegmentationUpid> </scte35:SegmentationDescriptor> </scte35:SpliceInfoSection> </Event>

下面的DASH標記示例XML片段展示了如何使用scte35:Binary

<Period start="PT444806.040S" id="123456" duration="PT15.000S"> <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" timescale="1"> <Event presentationTime="1541436240" duration="24" id="29"> <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016"> <scte35:Binary>/DAhAAAAAAAAAP/wEAUAAAHAf+9/fgAg9YDAAAAAAAA25aoh</Binary> </scte35:Signal> </Event> <Event presentationTime="1541436360" duration="24" id="30"> <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016"> <scte35:Binary>QW5vdGhlciB0ZXN0IHN0cmluZyBmb3IgZW5jb2RpbmcgdG8gQmFzZTY0IGVuY29kZWQgYmluYXJ5Lg==</Binary> </scte35:Signal> </Event>

下面的HLS標籤示例演示了如何使用EXT-X-DATERANGE

#EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2014-03-05T11: 15:00Z",PLANNED-DURATION=59.993,SCTE35-OUT=0xFC002F0000000000FF0 00014056FFFFFF000E011622DCAFF000052636200000000000A0008029896F50 000008700000000

下面的HLS標籤示例演示了如何使用EXT-X-CUE-OUT

#EXT-OATCLS-SCTE35:/DA0AAAAAAAAAAAABQb+ADAQ6QAeAhxDVUVJQAAAO3/PAAEUrEoICAAAAAAg+2UBNAAANvrtoQ== #EXT-X-ASSET:CAID=0x0000000020FB6501 #EXT-X-CUE-OUT:201.467

下面的HLS標籤示例演示了如何使用EXT-X-SPLICEPOINT-SCTE35

#EXT-X-SPLICEPOINT-SCTE35:/DA9AAAAAAAAAP/wBQb+uYbZqwAnAiVDVUVJAAAKqX//AAEjW4AMEU1EU05CMDAxMTMyMjE5M19ONAAAmXz5JA==

下面的例子演示了如何使用scte35:Binary解碼:

{ "table_id": 252, "section_syntax_indicator": false, "private_indicator": false, "section_length": 33, "protocol_version": 0, "encrypted_packet": false, "encryption_algorithm": 0, "pts_adjustment": 0, "cw_index": 0, "tier": "0xFFF", "splice_command_length": 16, "splice_command_type": 5, "splice_command": { "splice_event_id": 448, "splice_event_cancel_indicator": false, "out_of_network_indicator": true, "program_splice_flag": true, "duration_flag": true, "splice_immediate_flag": false, "utc_splice_time": { "time_specified_flag": false, "pts_time": null }, "component_count": 0, "components": null, "break_duration": { "auto_return": false, "duration": { "pts_time": 2160000, "wall_clock_seconds": 24.0, "wall_clock_time": "00:00:24:00000" } }, "unique_program_id": 49152, "avail_num": 0, "avails_expected": 0 "segment_num": 0, "segments_expected": 0, "sub_segment_num": 0, "sub_segments_expected": 0 }, "splice_descriptor_loop_length": 0, "splice_descriptors": null, "Scte35Exception": { "parse_status": "SCTE-35 cue parsing completed with 0 errors.", "error_messages": [], "table_id": 252, "splice_command_type": 5 } }