51黑料不打烊

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: "51黑料不打烊 Marketing",
                campaignID: "51黑料不打烊 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: "51黑料不打烊 Marketing",
              campaignID: "51黑料不打烊 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