Video Analytics

以下提供一些關於如何透過里程碑視訊測量在 iOS 上測量視訊的資訊。

秘訣

在視訊播放期間,會傳送頻繁的「心率」呼叫給此服務,測量播放時間。這些心率呼叫每 10 秒傳送一次,因此可產生精細的視訊參與量度,以及更精確的視訊流失報表。如需詳細資訊,請參閱在 Adobe Analytics 中測量音訊和視訊

所有平台上測量視訊的一般程序都十分相似。本內容提供開發人員作業的基本概覽和程式碼範例。

將播放器事件對應至 Analytics 變數

下表列出會傳送至 Analytics 的媒體資料。使用處理規則,將內容資料對應至 Analytics 變數。

  • a.media.name

    (必要) 訪客以某種方式檢視視訊時,系統以實作所指定的方式收集該視訊名稱。您可以為此變數新增分類。

    (選用) 自訂深入分析變數能提供視訊路徑資訊。

    • 變數類型: eVar
    • 預設過期時間:造訪
    • 自訂分析 (s.prop,用於視訊路徑)
  • a.media.name

    (選用) 提供視訊路徑資訊。必須由客戶服務為此變數啟用路徑。

    • 變數類型: Custom Insight (s.prop)
    • 事件類型: 自訂分析 (s.prop)
  • a.media.segment

    (必要) 收集視訊區段資料,包括區段名稱和視訊中區段發生的順序。此變數可透過啟用 segmentByMilestones 變數,在自動追蹤播放器事件時填入,或透過在手動追蹤播放器事件時設定自訂區段名稱。例如,當訪客檢視視訊中的第一個區段時,SiteCatalyst 可能會在 1:M:0-25 區段 eVar 中收集以下資訊。

    系統會於下列時間點,以預設的視訊資料收集方法收集資料:

    • 視訊開始 (播放)
    • 區段開始
    • 視訊結束 (停止)

    當訪客開始觀看時,Analytics 會在區段的開頭計算第一個區段檢視次數。後續區段會在區段開始時計為檢視次數。

    • 變數類型: eVar
    • 預設過期時間:頁面檢視
  • a.contentType

    收集訪客所檢視內容類型的相關資料。視訊測量傳送的點擊會被指派為 video 的內容類型。不需專為視訊追蹤作業保留此變數。使用此相同變數而擁有其他內容報表內容類型,可方便您分析不同內容類型中訪客的分佈情況。舉例來說,使用了這個變數,您就可以利用像是「article」或「product page」的值來標記其他內容類型。從視訊測量觀點來看,內容類型可讓您識別視訊訪客,並據此計算視訊轉換率。

    • 變數類型: eVar
    • 預設過期時間:頁面檢視
  • a.media.timePlayed

    計算自上次資料收集程序 (影像請求) 以來,用於觀看視訊的時間 (以秒為單位)。

    • 變數類型: 事件
    • 類型:計數器
  • a.media.view

    指出有訪客檢視了視訊的某部分。然而,此量度不會針對訪客所檢視的視訊,提供訪客檢視多少內容、檢視視訊哪一部分的相關資訊。

    • 變數類型: 事件
    • 類型:計數器
  • a.media.segmentView

    指出有訪客檢視了視訊區段的某部分。然而,此量度不會針對訪客所檢視的視訊,提供訪客檢視多少內容、檢視視訊哪一部分的相關資訊。

    • 變數類型: 事件
    • 類型:計數器
  • a.media.complete

    指出使用者已檢視完整的視訊。預設情況下,完成事件會在視訊結尾之前 1 秒測量。實施期間,您可以指定想要將距離視訊結尾幾秒視為檢視完成。對於沒有定義結束點的即時視訊和其他串流,您可以指定自訂時間點來測量完成次數,例如在訪客檢視一定的時間長度之後測量。

    • 變數類型: 事件
    • 類型:計數器

設定媒體設定

以您要用來追蹤視訊的設定,設定 ADBMediaSettings 物件。

ADBMediaSettings *mediaSettings = [ADBMobile mediaCreateSettingsWithName:MEDIA_NAME  
length:MEDIA_LENGTH playerName:PLAYER_NAME playerID:PLAYER_ID]; 
 
// milestone tracking. Use either standard milestones (percentage of total length) 
// or offset milestones (seconds elapsed from the beginning of the video) 
mediaSettings.milestones = @"25,50,75"; 
mediaSettings.segmentByMilestones = YES; 
 
mediaSettings.offsetMilestones = @"60,120"; 
mediaSettings.segmentByOffsetMilestones = YES; 
 
// seconds tracking - sends a hit every x seconds 
mediaSettings.trackSeconds = 30; // sends a hit every 30 seconds 
 
// open the video 
[ADBMobile mediaOpenWithSettings:mediaSettings callback:nil]; 
 
// You are now ready to play the video, for example, [movieViewController.moviePlayer play]; 
// Note the mediaPlay, mediaStop and mediaClose methods are called in the 
// event handlers described in the next section

追蹤播放器事件

若要測量視訊播放,必須在適當時間呼叫 mediaPlaymediaStop 以及 mediaClose 方法。舉例來說,當播放器暫停時,需呼叫 mediaStop。播放開始或繼續時則是呼叫 mediaPlay

下列範例將示範如何設定通知與呼叫媒體方法來測量視訊:

// configure notifications for when the video is finished, and when the 
media playback state changes 
 
- (void) configureNotifications:(MPMoviePlayerController *) movieController { 
 [[NSNotificationCenter defaultCenter] 
  addObserver: self 
  selector: @selector(mediaFinishedCallback:) 
  name: MPMoviePlayerPlaybackDidFinishNotification 
  object: movieController]; 
  
 [[NSNotificationCenter defaultCenter] 
  addObserver: self 
  selector: @selector(mediaPlaybackChangedCallback:) 
  name: MPMoviePlayerPlaybackStateDidChangeNotification 
  object: movieController]; 
} 
 
// define your notification callbacks. 
 
- (void) mediaFinishedCallback: (NSNotification*) notification { [ADBMobile mediaClose:MEDIA_NAME];} 
 
- (void) mediaPlaybackChangedCallback: (NSNotification*) notification { 
 MPMoviePlayerController *mediaController = notification.object; 
 if (mediaController.playbackState == MPMoviePlaybackStatePlaying) { 
  [ADBMobile mediaPlay:MEDIA_NAME offset: isnan(mediaController.currentPlaybackTime) ? 0.0 : mediaController.currentPlaybackTime]; 
 } 
 else if (mediaController.playbackState == MPMoviePlaybackStateSeekingBackward) { 
  [ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime]; 
 } 
 else if (mediaController.playbackState == MPMoviePlaybackStateSeekingForward) { 
  [ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime]; 
 } 
 else if (mediaController.playbackState == MPMoviePlaybackStatePaused) { 
  [ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime]; 
 } 
 else if (mediaController.playbackState == MPMoviePlaybackStateInterrupted) { 
  [ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime]; 
 } 
 else if (mediaController.playbackState == MPMoviePlaybackStateStopped) { 
  [ADBMobile mediaStop:MEDIA_NAME offset:mediaController.currentPlaybackTime]; 
 } 
}

類別

類別:ADBMediaSettings

bool segmentByMilestones; 
bool segmentByOffsetMilestones; 
double length; 
NSString *channel; 
NSString *name; 
NSString *playerName; 
NSString *playerID; 
NSString *milestones; 
NSString *offsetMilestones; 
NSUInteger trackSeconds; 
NSUInteger completeCloseOffsetThreshold; 
// settings used for ad tracking. For  
bool isMediaAd; 
double parentPodPosition; 
NSString *CPM; 
NSString *parentName; 
NSString *parentPod; 

類別:ADBMediaState

bool ad; 
bool clicked; 
bool complete; 
bool eventFirstTime; 
double length; 
double offset; 
double percent; 
double segmentLength; 
double timePlayed; 
double timePlayedSinceTrack; 
double timestamp; 
NSDate *openTime  
NSString *name 
NSString *playerName 
NSString *mediaEvent 
NSString *segment 
NSUInteger milestone 
NSUInteger offsetMilestone 
NSUInteger segmentNum 
NSUInteger eventType

媒體測量類別與方法參考

  • mediaCreateSettings​WithName:​length:​playerName:​playerID:

    傳回 ADBMediaSettings 物件以及指定的參數。

    • 此方法的語法如下:

      +(ADBMediaSettings *) mediaCreateSettingsWithName:(NSString *)name
                                                 length:(double)length
                                              playerName:(NSString *)playerName
                                               playerID:(NSString *)playerID;
      
    • 此方法的範例程式碼如下:

      ADBMediaSettings *myCatSettings =
            [ADBMobile mediaCreateSettingsWithName:@"catVideo"                                               length:85
                                        playerName:@"catVideoPlayer"
                                          playerID:@"catPlayerId"]; 
      
  • mediaAdCreateSettings​WithName:​length:​playerName:​parentName:​parentPod:​parentPodPosition:​CPM:

    傳回 ADBMediaSettings 物件以便用於追蹤廣告視訊。

    • 此方法的語法如下:

      + (ADBMediaSettings *) mediaAdCreateSettingsWithName:(NSString *)name
                                                    length:(double)length   
                                                playerName:(NSString *)playerName
                                                parentName:(NSString *)parentName
                                                 parentPod:(NSString *)parentPod
                                        parentPodPosition:(double)parentPodPosition
                                                      CPM:(NSString *)CPM; 
      
    • 此方法的範例程式碼如下:

        ADBMediaSettings *mySettings = 
             [ADBMobile mediaAdCreateSettingsWithName:@"ad"                                       length:30
                                           playerName:@"adPlayer"
                                           parentName:@"catVideo"
                                           parentPod:@"catCollection"
                                           parentPodPosition:2
                                                        CPM:nil];
      
  • mediaOpenWithSettings:​callback:

    開啟 ADBMediaSettings 物件用於追蹤。

    • 此方法的語法如下:

      + (void) mediaOpenWithSettings:(ADBMediaSettings *)settings
                            callback:(void (^)(ADBMediaState *mediaState))callback; 
      
    • 此方法的範例程式碼如下:

      [ADBMobile mediaOpenWithSettings:mySettings callback:^(ADBMediaState *mediaState) {
           // do something with media state if you want}];
      
  • mediaClose:

    關閉命名為​「名稱」​的媒體項目。

    • 此方法的語法如下:

       + (void) mediaClose:(NSString *)name; 
      
    • 此方法的範例程式碼如下:

      [ADBMobile mediaClose:@"kittiesPlaying"];
      
  • mediaPlay:​offset:

    在指定的​偏移處 (以秒為單位) 播放命名為​「名稱」​的媒體項目。

    • 此方法的語法如下:

       + (void) mediaPlay:(NSString *)name offset:(double)offset;
      
    • 此方法的範例程式碼如下:

      [ADBMobile mediaPlay:@"cats" offset:25];
      
  • mediaComplete:​offset:

    在提供的​偏移處 (以秒為單位) 手動將媒體項目標示為已完成。

    • 此方法的語法如下:

       + (void) mediaComplete:(NSString *)name offset:(double)offset;
      
    • 此方法的範例程式碼如下:

       [ADBMobile mediaComplete:@"meowzah" offset:90]; 
      
  • mediaStop:​offset:

    通知媒體模組,視訊已在指定的​偏移處​停止或暫停。

    • 此方法的語法如下:

      + (void) mediaStop:(NSString *)name offset:(double)offset; 
      
    • 此方法的範例程式碼如下:

      [ADBMobile mediaStop:@"toonses" offset:30]; 
      
  • mediaClick:​offset:

    通知媒體模組,媒體項目已被點按。

    • 此方法的語法如下:

      + (void) mediaClick:(NSString *)name offset:(double)offset;
      
    • 此方法的範例程式碼如下:

      [ADBMobile mediaClick:@"soManyCats" offset:47];
      
  • mediaTrack:​withData:

    傳送目前媒體狀態的追蹤動作呼叫 (無頁面檢視)。

    • 此方法的語法如下:

      + (void) mediaTrack:(NSString *)name withData:(NSDictionary *)data;
      

本頁內容

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now