插入廣告

廣告插入可解析隨選視訊(VOD)、即時串流以及具有廣告追蹤和廣告播放的線性串流的廣告。 TVSDK會向廣告伺服器提出所需要求,接收指定內容的廣告資訊,並將廣告分階段置於內容中。

ad break​包含一或多個依序播放的廣告。 TVSDK會將廣告插入主要內容中,作為一個或多個廣告插播的成員。

秘訣

如果廣告有錯誤,TVSDK會忽略廣告。

解析並插入VOD廣告

TVSDK支援數個VOD廣告解析與插入的使用案例。

  • 前段廣告插入,廣告插入在內容開頭。
  • 中段廣告插入,其中至少一個廣告插入內容的中間。
  • 滾動後廣告插入,其中至少有一個廣告附加在內容的結尾。

TVSDK會解析廣告、將廣告插入廣告伺服器所定義的位置,並在播放開始前計算虛擬時間軸。 播放開始後,不會發生任何變更,例如插入的廣告或移除的插入廣告。

解析並插入即時和線性廣告

TVSDK支援即時和線性廣告解析與插入的數個使用案例。

  • 前滾廣告插入,其中至少一個廣告插入在內容的開頭。
  • 中段廣告插入,其中至少一個廣告插入內容的中間。

TVSDK會解析廣告,並在即時或線性串流中遇到提示點時插入廣告。 依預設,TVSDK支援在解析和放置廣告時,以下提示為有效的廣告標籤:

  • ​# EXT-X-CUEPOINT
  • ​# EXT-X-AD
  • ​# EXT-X-CUE
  • ​# EXT-X-CUE-OUT

這些標籤要求中繼資料欄位的DURATION(以秒為單位)和提示的唯一ID。 例如:

#EXT-X-CUE DURATION=27 ID=identiferForThisCue ... 

如需其他提示的詳細資訊,請參閱訂閱自訂標籤

追蹤用戶端廣告

TVSDK會自動追蹤VOD和即時/線性串流的廣告。

通知會用來通知您的應用程式廣告進度,包括廣告何時開始及何時結束的相關資訊。

實作早期廣告插播傳回

若是即時串流廣告插入,您可能需要先退出廣告插播,才能播放該插播中的所有廣告。

以下是早期廣告插播返回的一些範例:

  • 特定體育賽事中廣告插播的持續時間。

    雖然提供預設持續時間,但如果遊戲在中斷結束前繼續,廣告中斷必須退出。

  • 即時串流中廣告中斷期間的緊急信號。

透過資訊清單中的自訂標籤(稱為剪接入或提示輸入標籤),識別提早退出廣告插播的能力。 TVSDK可讓應用程式訂閱這些剪接入標籤,以提供剪接入機會。

  • 若要將#EXT-X-CUE-IN標籤當做剪接機會,並實作早期廣告插播傳回:

    1. 訂閱標籤。

      [PTSDKConfig setSubscribedTags:[NSArray arrayWithObject:@"#EXT-X-CUE-IN"]];
      
    2. 新增提示機會解析程式。

      // self.player is the PTMediaPlayer instance created for content and ad playback 
      PTDefaultMediaPlayerClientFactory *clientFactory = self.player.mediaPlayerClientFactory; 
      
      // Set cue in opportunity resolver 
      [clientFactory registerOpportunityResolver:[PTDefaultAdSpliceInOpportunityResolver adSpliceInOpportunityResolverWithTag:@"#EXT-X-CUE-IN"]];
      
  • 要共用用於剪接和剪接的相同標籤:

    1. 如果應用程式共用相同的提示來指示提示退出/剪接和提示加入/剪接入,請延伸PTDefaultAdOpportunityResolver並實作preparePlacementOpportunity方法。

      秘訣

      下列程式碼假設應用程式具有isCueInOpportunity方法的實作。

      - (PTPlacementOpportunity *)preparePlacementOpportunity:(PTTimedMetadata *)timedMetadata
      {
      if ([self isCueInOpportunity:timedMetadata])
      {
      return [PTPlacementOpportunity advertisementSpliceInOpportunityWithTimedMetadata:timedMetadata];
      }
      else
      {
      return [super preparePlacementOpportunity:timedMetadata];
      }
      }
      
    2. PTDefaultMediaPlayerClientFactory實例上註冊擴展的機會解析器。

      // self.player is the PTMediaPlayer instance created for content and ad playback 
      PTDefaultMediaPlayerClientFactory *clientFactory = self.player.mediaPlayerClientFactory; 
      
      // Clear existing resolver and register the new opportunity resolver 
      [clientFactory clearOpportunityResolvers]; 
      [clientFactory registerOpportunityResolver:[[PTDefaultExtendedAdOpportunityResolver new] autorelease]];
      

本頁內容