sendMediaEvent

sendMediaEvent命令是Web SDK streamingMedia元件的一部分。 您可以使用此元件來收集與網站上媒體工作階段相關的資料。 請參閱streamingMedia 檔案以瞭解如何設定此元件。

使用sendMediaEvent命令來追蹤媒體播放次數、暫停、完成、播放器狀態更新及其他相關事件。

Web SDK可根據媒體工作階段追蹤的型別處理媒體事件:

  • 自動追蹤工作階段的事件處理。 在此模式中,您不需要將sessionID傳遞至媒體事件或播放點值。 Web SDK會根據您提供的播放器ID和啟動媒體工作階段時提供的getPlayerDetails回呼函式,為您處理此工作。
  • 手動追蹤工作階段的事件處理。 在此模式中,您必須將sessionID與播放點值(整數值)一起傳遞至媒體事件。 如有需要,您也可以傳遞體驗品質資料詳細資訊。

依型別處理媒體事件 handle-by-type

選取下方的標籤,以檢視每個事件型別和工作階段追蹤方法(自動或手動)的事件型別處理範例。

播放 play

media.play事件型別用於追蹤媒體播放開始的時間。 當播放器從其他狀態變更為「正在播放」狀態時,應傳送此事件。 在播放器改變為「正在播放」之前,其他可能的狀態包括「正在緩衝」、使用者從「已暫停」狀態恢復、播放器從錯誤中復原或自動播放。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.play"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.play",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

暫停 pause

media.pauseStart事件型別用於追蹤媒體播放何時暫停。 此事件應在使用者按下​ 暫停 ​時傳送。 沒有繼續事件型別。 當您在media.pauseStart之後傳送media.play事件時會推斷為繼續。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.pauseStart"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.pauseStart",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

錯誤 error

media.error事件型別用於追蹤媒體播放期間發生錯誤的時間。 發生錯誤時,應傳送此事件。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.error",
        mediaCollection: {
            errorDetails: {
                name: "network-error",
                source: "player"
            }
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.error",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID,
                errorDetails: {
                    name: "network-error",
                    source: "player"
                }
            }
        }
    });
});

廣告插播開始 ad-break-start

media.adBreakStart事件型別用於追蹤廣告插播何時開始。 此事件應在廣告插播開始時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.adBreakStart",
        mediaCollection: {
            advertisingPodDetails: {
                friendlyName: "Mid-roll",
                offset: 0,
                index: 1
            }
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.adBreakStart",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID,
                advertisingPodDetails: {
                    friendlyName: "Mid-roll",
                    offset: 0,
                    index: 1
                }
            }
        }
    });
});

廣告插播完成 ad-break-complete

media.adBreakComplete事件型別用於追蹤廣告插播完成的時間。 此事件應在廣告插播完成時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.adBreakComplete"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.adBreakComplete",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

廣告開始 ad-start

media.adStart事件型別是用來追蹤廣告何時開始。 此事件應在廣告開始時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.adStart",
        mediaCollection: {
            advertisingDetails: {
                friendlyName: "Ad 1",
                name: "/uri-reference/001",
                length: 10,
                advertiser: "Adobe Marketing",
                campaignID: "Adobe Analytics",
                creativeID: "creativeID",
                creativeURL: "https://creativeurl.com",
                placementID: "placementID",
                siteID: "siteID",
                podPosition: 11,
                playerName: "HTML5 player"
            },
            customMetadata: [{
                    name: "myCustomValue3",
                    value: "c3"
                },
                {
                    name: "myCustomValue2",
                    value: "c2"
                },
                {
                    name: "myCustomValue1",
                    value: "c1"
                }
            ]
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
        eventType: "media.adStart",
        mediaCollection: {
            playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
            sessionID,
            advertisingDetails: {
              friendlyName: "Ad 1",
              name: "/uri-reference/001",
              length: 10,
              advertiser: "Adobe Marketing",
              campaignID: "Adobe Analytics",
              creativeID: "creativeID",
              creativeURL: "https://creativeurl.com",
              placementID: "placementID",
              siteID: "siteID",
              podPosition: 11,
              playerName: "HTML5 player"
            },
            customMetadata: [
              {
                name: "myCustomValue3",
                value: "c3"
              },
              {
                name: "myCustomValue2",
                value: "c2"
              },
              {
                name: "myCustomValue1",
                value: "c1"
              }]
        }
        }
    });
});

廣告完成 ad-complete

media.adComplete事件型別用於追蹤廣告完成的時間。 此事件應在廣告完成時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.adComplete"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.adComplete",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

廣告略過 ad-skip

media.adSkip事件型別是用來追蹤何時略過廣告。 此事件應在略過廣告時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.adSkip"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.adSkip",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

章節開始 chapter-start

media.chapterStart事件型別用於追蹤章節何時開始。 此事件應在章節開始時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.chapterStart",
        mediaCollection: {
            chapterDetails: {
                friendlyName: "Chapter 1",
                position: 1,
                length: 10,
                index: 1,
                offset: 0
            },
            customMetadata: [{
                    name: "myCustomValue3",
                    value: "c3"
                },
                {
                    name: "myCustomValue2",
                    value: "c2"
                },
                {
                    name: "myCustomValue1",
                    value: "c1"
                }
            ]
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.chapterStart",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID,
                chapterDetails: {
                    friendlyName: "Chapter 1",
                    position: 1,
                    length: 10,
                    index: 1,
                    offset: 0
                },
                customMetadata: [{
                        name: "myCustomValue3",
                        value: "c3"
                    },
                    {
                        name: "myCustomValue2",
                        value: "c2"
                    },
                    {
                        name: "myCustomValue1",
                        value: "c1"
                    }
                ]
            }
        }
    });
});

章節完成 chapter-complete

media.chapterComplete事件型別用於追蹤章節何時完成。 此事件應在章節完成時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.chapterComplete"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.chapterComplete",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

章節略過 chapter-skip

media.chapterSkip事件型別用於追蹤何時略過章節。 此事件應在略過章節時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.chapterSkip"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.chapterSkip",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

緩衝開始 buffer-start

media.bufferStart事件型別是用來追蹤緩衝何時開始。 此事件應在緩衝開始時傳送。 沒有bufferResume事件型別。 當您在bufferStart之後傳送播放事件時推斷出bufferResume

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.bufferStart"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.bufferStart",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

位元速率變更 bitrate-change

media.bitrateChange事件型別用於追蹤位元速率變更的時間。 此事件應在位元速率變更時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.bitrateChange",
        mediaCollection: {
            qoeDataDetails: {
                framesPerSecond: 1,
                bitrate: 35000,
                droppedFrames: 30,
                timeToStart: 1364
            }
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.bitrateChange",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID,
                qoeDataDetails: {
                    bitrate: 35000,
                    droppedFrames: 30,
                    timeToStart: 1364
                }
            }
        }
    });
});

狀態更新 state-updates

media.statesUpdate事件型別用於追蹤播放器狀態何時變更。 此事件應在播放器狀態變更時傳送。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.statesUpdate",
        mediaCollection: {
            statesStart: [{
                    name: "mute"
                },
                {
                    name: "pictureInPicture"
                }
            ],
            statesEnd: [{
                name: "fullScreen"
            }]
        }
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.stateUpdate",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID,
                statesStart: [{
                        name: "mute"
                    },
                    {
                        name: "pictureInPicture"
                    }
                ],
                statesEnd: [{
                    name: "fullScreen"
                }]
            }
        }
    });
});

工作階段結束 session-end

media.sessionEnd事件型別用於通知Media Analytics後端在使用者放棄檢視內容且不太可能返回時立即關閉工作階段。

如果您未傳送sessionEnd事件,則放棄的工作階段會在未收到任何事件達10分鐘後逾時,或是播放點在30分鐘內未移動。 工作階段會自動刪除。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.sessionEnd"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.sessionEnd",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});

工作階段完成 session-complete

media.sessionComplete事件型別用於追蹤媒體工作階段完成的時間。 當主要內容的結尾到達時,應傳送此事件。

自動工作階段追蹤
code language-javascript
alloy("sendMediaEvent", {
    playerId: "movie-test",
    xdm: {
        eventType: "media.sessionComplete"
    }
});
手動工作階段追蹤
code language-javascript
sessionPromise.then(sessionID => {
    alloy("sendMediaEvent", {
        xdm: {
            eventType: "media.sessionComplete",
            mediaCollection: {
                playhead: parseInt(document.getElementById("movie-test").currentTime, 10),
                sessionID
            }
        }
    });
});
recommendation-more-help
ad108910-6329-42f1-aa1d-5920a2b13636