從 MediaTailor 對跳過廣告進行故障診斷 - AWS Elemental MediaTailor

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

從 MediaTailor 對跳過廣告進行故障診斷

略過廣告是 MediaTailor 客戶最常回報的問題之一。本節提供在播放期間為什麼可能會略過廣告的詳細分析,並提供解決方案以確保適當的廣告插入。

症狀和影響

發生廣告略過時,您可能會觀察到下列症狀:

  • 在預期的廣告休息時間期間未出現的廣告

  • 廣告休息時間會填入內容而非廣告

  • 不同檢視工作階段之間的不一致廣告播放

  • CloudWatch 日誌顯示具有各種略過原因AdSkipped的事件

廣告略過會直接影響收入產生,如果未及時解決,可能會導致瀏覽者體驗不佳。

常見原因

MediaTailor 會在日誌MediaTailor/AdDecisionServerInteractions群組FILLED_AVAIL的事件日誌訊息中記錄略過廣告的特定原因。了解這些略過原因對於有效故障診斷至關重要。

常見廣告略過原因
略過原因 描述
NEW_CREATIVE 廣告尚未轉碼。當 MediaTailor 遇到需要先轉碼才能插入的新廣告創作時,就會發生這種情況。
PROFILE_NOT_FOUND 與工作階段組態相關聯的 MediaConvert 轉碼描述檔不存在,無法進行廣告準備。
TRANSCODE_ERROR 廣告轉碼程序發生錯誤且無法完成。
TRANSCODE_IN_PROGRESS 廣告轉碼仍在進行中,尚未準備好插入。
INTERNAL_ERROR 處理廣告時發生內部 MediaTailor 錯誤,防止插入。
AVAIL_DURATION_EXCEEDED 廣告不符合廣告休息時間的剩餘持續時間。
LEFTOVER_AVAIL_EXCEEDED_THRESHOLD 可插入的所有廣告累積持續時間不符合為工作階段設定的個人化閾值。
VAST_PARSING_ERROR 來自廣告決策伺服器的 VAST 回應包含錯誤或格式不正確。
ADS_TIMEOUT 廣告決策伺服器未在設定的逾時期間內回應。
MEDIA_FILE_UNAVAILABLE VAST 回應中指定的廣告媒體檔案無法存取。
SESSION_INITIALIZATION_FAILED MediaTailor 工作階段無法正確初始化,通常是因為工作階段變數不正確。
EARLY_CUE_IN 由於提早提示訊號,廣告休息時間比預期更早結束,防止廣告完全插入。
NO_VARIANT_MATCH 廣告創作沒有符合內容串流編碼參數 (位元速率、解析度、轉碼器) 的變體。
NO_MODEL_CREATIVE_MATCH 廣告創意不符合目前播放組態的預期模型或格式需求。
REJECTED_REPLICA_VAST VAST 回應因為複本或重複的內容偵測政策而遭到拒絕。
INVALID_VAST_WRAPPER_AD VAST 包裝函式廣告包含無效或格式不正確的包裝函式元素,以防止成功插入廣告。
IMPORT_ERROR 廣告匯入程序期間發生錯誤,導致無法處理要插入的廣告。
IMPORT_IN_PROGRESS 廣告匯入程序目前正在進行中,尚未完成。

除了這些特定略過原因之外,其他常見原因包括:

  • 不正確的工作階段變數組態

  • 廣告決策伺服器 (ADS) 連線問題

  • 相同廣告內容的不一致創意 IDs

  • 資訊清單格式的玩家相容性問題

  • 影響廣告區段交付的 CDN 組態問題

疑難排解步驟

請依照下列步驟來診斷和解決廣告略過問題:

  1. 識別特定的略過原因

    使用 CloudWatch Logs Insights 查詢MediaTailor/AdDecisionServerInteractions日誌群組是否有略過的廣告:

    fields @timestamp, avail.availId, skippedAds.0.skippedReason, skippedAds.0.creativeUniqueId | filter eventType = "FILLED_AVAIL" and ispresent(skippedAds.0.skippedReason) | sort @timestamp desc

    此查詢會傳回最新廣告略過事件及其特定原因,協助您識別模式。

  2. 檢查工作階段變數組態

    不正確的工作階段變數是略過廣告的常見原因。請驗證:

    • 所有必要的工作階段變數都已在您的 ADS URL 範本中正確設定

    • 動態變數格式正確 (如需正確的語法MediaTailor 動態廣告變數,請參閱 )

    • 玩家參數已正確傳遞至 MediaTailor

    正確設定具有工作階段變數的 ADS URL 範例:

    https://my-ads-server.com/ads? sessionId=[session.id]& playerParams=[player_params.param1]& deviceType=[player_params.device]& correlator=[session.avail_duration_ms]
  3. 解決 NEW_CREATIVE 問題

    如果略過廣告的原因如下NEW_CREATIVE

    MediaTailor 根據三個關鍵因素轉碼廣告:創意 ID、AWS 帳戶 ID 和轉碼變體集 (基礎內容串流的播放轉譯)。如果創意 ID 或轉碼變體集的任何部分不同,MediaTailor 會將廣告視為需要轉碼的新變體。這包括四捨五入至最接近的 8,000 位元時的位元速率變更,這可能會在基礎內容串流變更主要資訊清單時發生。

    如需 NEW_CREATIVE 案例的詳細資訊,包括位元速率變更和創意 ID 衝突,請參閱此程序後的 詳細的 NEW_CREATIVE 分析一節。

    1. 驗證您的廣告決策伺服器是否針對相同的廣告內容傳回一致的創意 IDs

    2. 檢查您的內容串流是否維持一致的位元速率和變體集

    3. 考慮實作廣告預先擷取,以確保在播放之前已轉碼廣告 (請參閱 預先擷取廣告)

    4. 如需持續問題,請聯絡 AWS Support 以取得其他故障診斷協助

  4. 解決 ADS 連線問題

    如果因為 ADS_TIMEOUT或相關原因而略過廣告:

    • 確認您的廣告決策伺服器可從 MediaTailor 存取

    • 檢查您的 ADS 是否在設定的逾時期間內回應

    • 確保您的 ADS 可以在尖峰時段處理請求量

    • 當您的主要 ADS 無法使用時,請考慮為 實作備用廣告策略

  5. 解決 VAST 回應問題

    如果使用 VAST_PARSING_ERROR或 略過廣告MEDIA_FILE_UNAVAILABLE

    • 根據 VAST 規格驗證您的 VAST 回應格式

    • 確保 VAST 回應中的所有媒體檔案 URLs 都可公開存取

    • 檢查 VAST XML 中特殊字元的正確編碼

    • 確認您的 VAST 回應包含與 MediaTailor 相容格式的媒體檔案

  6. 解決持續時間不相符的問題

    如果使用 AVAIL_DURATION_EXCEEDED或 略過廣告LEFTOVER_AVAIL_EXCEEDED_THRESHOLD

    • 確保您的 ADS 正在傳回符合可用廣告休息時間期間的廣告

    • 檢查內容中的廣告休息時間標記是否正確發出預期持續時間的訊號

    • 如果適用於您的使用案例,請考慮調整個人化閾值

  7. 監控 CloudWatch 指標

    為主要 MediaTailor 指標設定 CloudWatch 警示,以主動偵測廣告略過問題:

    • AdDecisionServer.Ads.Skipped - 略過的廣告計數

    • AdDecisionServer.Timeouts - ADS 逾時計數

    • Avail.FilledDuration - 填入廣告休息時間的持續時間

    • Avail.SlateOnly - 僅填滿 Slate 的廣告休息時間計數

    如需可用指標的詳細資訊,請參閱 AWS Elemental MediaTailor 使用 Amazon CloudWatch 指標進行監控

  8. 解決變體比對和格式問題

    如果因為 NO_VARIANT_MATCHEARLY_CUE_INNO_MODEL_CREATIVE_MATCH或 格式相關原因而略過廣告:

    • NO_VARIANT_MATCH確保您的廣告創作可在符合您內容串流編碼參數 (位元速率、解析度、轉碼器) 的變體中使用。設定您的廣告伺服器,以提供相容格式的廣告。

    • NO_MODEL_CREATIVE_MATCH檢閱播放組態的創意模型需求,並確保您的廣告伺服器提供符合預期格式和規格的廣告。

    • EARLY_CUE_IN確認內容串流的提示訊號已正確計時,且廣告休息時間有足夠的廣告插入持續時間。檢查是否有過早的 EXT-X-CUE-IN 標籤或 SCTE-35 splice_insert 訊息。

  9. 解決 VAST 包裝函式和匯入問題

    如果使用 REJECTED_REPLICA_VASTIMPORT_ERRORINVALID_VAST_WRAPPER_AD或 略過廣告IMPORT_IN_PROGRESS

    • REJECTED_REPLICA_VAST檢查您的廣告伺服器組態是否有重複的內容偵測政策。確保 VAST 回應包含唯一的創意內容,並避免在相同工作階段中提供相同的廣告。

    • INVALID_VAST_WRAPPER_AD根據 VAST 規格驗證您的 VAST 包裝函式回應。確保所有包裝函式元素都已正確格式化,並包含有效的 VASTAdTagURI。

    • IMPORT_ERRORIMPORT_IN_PROGRESS這些表示廣告匯入程序的問題。檢查廣告創意來源檔案的可存取性和格式相容性。監控匯入進度並重試失敗的匯入。

詳細的 NEW_CREATIVE 分析

本節提供有關 NEW_CREATIVE 廣告略過案例的完整資訊,包括根本原因和進階故障診斷技術。

位元速率變更案例

當位元速率四捨五入至最接近的 8,000 位元後不相符時,位元速率變更可能會導致 NEW_CREATIVE 略過。這通常發生在以下情況:

  • 基礎內容串流會變更主要資訊清單

  • 使用與現有工作階段不同的變體建立新工作階段

  • 內容串流位元速率在播放工作階段之間不一致

Creative ID 衝突

當 MediaTailor 針對已轉碼的媒體檔案遇到不同的創意 ID 時,會發生下列順序:

  1. 廣告會略過原因 NEW_CREATIVE

  2. 這會導致不必要的轉碼嘗試

  3. 創意標示為 DUPLICATE_TRANSCODE 或 COPY_DEDUP

注意

MediaTailor 不會過期或刪除轉碼廣告。它們無限期存放在 MediaTailor 擁有的 S3 儲存貯體中。

ETAG 處理

ETAG 是與特定版本的廣告播放清單或資訊清單相關聯的唯一識別符。MediaTailor 使用創意 ID 來識別廣告資產,但如果創意 ID 隨每個請求而變更,則廣告可能會標記為新創意,防止插入。

警告

創意 ID 不保證是唯一的,這可能會導致顯示不正確的廣告。

持續時間格式問題

伺服器端廣告插入 (SSAI) 需要資訊清單檔案中的特定持續時間參數格式。不正確的持續時間格式可能會導致廣告插入失敗。

EXT-X-CUE-OUT 持續時間參數

EXT-X-CUE-OUT 標籤持續時間參數必須格式化為整數值,而非 ISO 8601 持續時間格式。

持續時間格式要求
格式 範例 Status
整數 (正確) 32 支援 - 代表 32 秒
小數 (正確) 30.000 支援 - 代表 30 秒
ISO 8601 (不正確) PT32S 不支援 - 導致插入失敗

正確的資訊清單格式範例:

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXTINF:10.0, segment1.ts #EXT-X-CUE-OUT:30 #EXTINF:10.0, segment2.ts #EXT-X-CUE-IN #EXTINF:10.0, segment3.ts
重要

確保所有 EXT-X-CUE-OUT 持續時間參數都使用整數格式,以防止廣告插入問題。

驗證廣告標記格式

若要驗證廣告標記格式並識別持續時間剖析問題:

  1. AD_MARKER_FOUND事件下的 CloudWatch 日誌中檢查廣告標記格式

  2. 尋找FILLED_AVAIL事件中的FORMAT_ERROR略過原因

  3. 確認內容資訊清單中的持續時間值使用支援的格式

  4. 使用不同的持續時間格式進行測試,以識別相容性問題

VOD 串流最佳化

隨需視訊 (VOD) 串流可以產生多個 ADS 請求,這可能會影響效能。MediaTailor 提供最佳化功能來解決此行為。

多個 ADS 請求問題

根據預設,VPD 串流可能會在 MediaTailor 日誌中產生多個 MAKING_ADS_REQUEST 事件。這是因為 VOD 內容中的每個廣告休息時間都會觸發對廣告決策伺服器的個別 ADS 請求。

若要識別您的 VOD 串流是否產生過多 ADS 請求,請使用此 CloudWatch Logs Insights 查詢:

fields @timestamp, sessionId, eventType, adBreakIndex | filter eventType = "MAKING_ADS_REQUEST" | stats count() by sessionId | sort count desc | limit 20

VOD 平行處理功能

MediaTailor 提供平行化功能,可最佳化 VOD 內容的 ADS 請求處理。您可以在播放組態中使用 maxConcurrentAdsRequests 參數來設定此功能。

範例組態:

{ "Name": "OptimizedVODConfig", "VideoContentSourceUrl": "https://example.com/content/", "AdDecisionServerUrl": "https://example.com/ads", "maxConcurrentAdsRequests": 3 }

此組態會限制並行 ADS 請求的數量,減少伺服器負載並改善回應時間。

包裝 VAST 回應處理

平行化功能也會最佳化包裝 VAST 回應的處理,這在程式設計廣告案例中很常見。包裝的 VAST 回應包含多層 VAST 標籤,需要取消包裝才能到達實際的媒體檔案。

對工作階段變數進行故障診斷

工作階段變數在廣告目標和選擇中扮演關鍵角色。不正確的工作階段變數組態是廣告略過問題的常見原因。

常見的工作階段變數問題

下列工作階段變數問題可能會導致廣告略過:

  • 缺少必要的變數:您的廣告決策伺服器可能需要未提供的特定變數

  • 變數語法不正確:變數必須使用正確的語法 (例如,[session.id]而非 ${session.id})

  • URL 編碼問題:變數值中的特殊字元可能需要適當的 URL 編碼

  • 不一致的玩家參數:玩家參數必須一致地跨工作階段傳遞

  • 動態變數解析失敗:無法解析的變數將以空字串取代

  • SCTE-35 UPID 剖析問題:分段 UPID 處理的問題可能會導致工作階段變數解析失敗。

驗證工作階段變數解析

若要驗證您的工作階段變數是否已正確解析:

  1. 為您的 MediaTailor 組態啟用偵錯記錄

  2. 檢查MediaTailor/AdDecisionServerInteractions日誌群組是否有實際的 ADS 請求 URLs

  3. 確認範本 URL 中的所有變數已取代為適當的值

  4. 尋找以空字串取代的任何變數,這可能表示解析失敗

顯示已解析 ADS 請求 URL 的日誌項目範例:

{ "eventType": "MAKING_ADS_REQUEST", "sessionId": "abcd1234-5678-efgh-9012-ijklmnopqrst", "requestUrl": "https://my-ads-server.com/ads?sessionId=abcd1234-5678-efgh-9012-ijklmnopqrst&playerParams=mobile&deviceType=android&correlator=30000", "timestamp": "2025-06-20T19:00:00Z" }

SCTE-35 UPID 剖析和工作階段變數

SCTE-35 分段 UPID 處理的問題可能會導致工作階段變數問題:

  • 格式要求:UTP 必須具有 segmentation_upid_type 12 並包含 format_identifier才能正確處理。

  • 剖析規則:解碼的 UPID 可以包含多個值的冒號分隔符號。範本變數和解碼 UPID 字符的數量必須相等。

  • 格式無效:避免沒有值 (例如 :::46175218::4053) 的雙冒號,因為這些會導致剖析失敗。

  • 格式識別符處理:MediaTailor 假設前四個位元組是 format_identifier。如果遺失,prie_data 會截斷前四個位元組,可能會導致 ADS 接收到與預期不同的值。

進階 CloudWatch Logs Insights 查詢

使用這些專門的 CloudWatch Logs Insights 查詢來詳細疑難排解廣告插入問題:

尋找 Creative IDs

若要識別 ads_interaction_log 中 FILLED_AVAIL 事件的 Creative IDs:

fields @timestamp, sessionId, eventType | filter sessionId like /sessionId/ and eventType!='BEACON_FIRED' | sort @timestamp desc
注意

sessionId 將 取代為您正在調查的實際工作階段 ID。

全面的工作階段分析

如需特定工作階段廣告插入行為的詳細分析:

fields @timestamp, sessionId, eventType, creativeId, skipReason, adBreakIndex | filter sessionId = "your-session-id-here" | filter eventType in ["FILLED_AVAIL", "SKIPPED_AVAIL", "MAKING_ADS_REQUEST"] | sort @timestamp asc | limit 100

NEW_CREATIVE 略過分析

若要分析 NEW_CREATIVE 廣告略過中的模式:

fields @timestamp, sessionId, creativeId, skipReason, MediaFileSourceUrl | filter skipReason = "NEW_CREATIVE" | stats count() by creativeId, MediaFileSourceUrl | sort count desc | limit 50

防止略過廣告的最佳實務

實作這些最佳實務,將廣告略過問題降至最低:

  • 實作廣告預先擷取:使用 MediaTailor 的預先擷取功能,以確保在播放之前已轉碼廣告。如需實作詳細資訊預先擷取廣告,請參閱 。

  • 維持一致的創意 IDs:確保您的廣告決策伺服器針對跨工作階段的相同廣告內容使用一致的創意 IDs。

  • 確保適當的持續時間格式:將整數值用於 EXT-X-CUE-OUT 持續時間參數,而不是 ISO 8601 格式。

  • 設定 VOD 最佳化:為具有多個廣告休息時間的 VOD 串流設定 maxConcurrentAdsRequests,以減少伺服器負載。

  • 監控轉碼模式:監控 CloudWatch 日誌的轉碼效率,如果您注意到表示轉碼問題的模式,請聯絡 AWS Support

  • 驗證 ETAG 一致性:確保相同內容的媒體檔案 URIs一致,以防止不必要的重新轉碼。

  • 實作系統性疑難排解:遵循結構化方法:識別略過原因、分析根本原因、實作解決方案,以及驗證修正。

  • 最佳化 ADS 效能:設定廣告決策伺服器以快速回應並處理尖峰流量。

  • 實作適當的錯誤處理:設定 Slate 內容以在無法插入廣告時填補廣告休息時間。

  • 監控廣告插入指標:設定 CloudWatch 警示以及早偵測廣告略過問題。

  • 徹底測試:驗證不同裝置和網路條件的廣告插入工作流程。

  • 實作備用策略:設定主要廣告來源失敗時的備份廣告來源或預設廣告。

如需疑難排解廣告略過問題的詳細資訊,請參閱下列相關主題: