我正在使用Youtube Javascript API加载和播放嵌入视频的网站。
当用户单击播放,暂停等时,会有代表这些状态的整数。例如:
为快速转发发送了什么状态消息?
请注意,当我说快进时,我的意思是拖动视频计时器以使视频前进或返回到视频中的某个点。
您知道我如何检测某人何时快速转发吗?
* 编辑:*
经过更多检查后,我确定当您拖动时间栏时,将发送消息YT.PlayerState.PAUSED。这是一个主要问题,因为当用户暂停视频时,我会将视频缩小到其原始大小。但是由于快进会发送与暂停相同的消息,因此当有人快进(原本不应该发生)时,视频会收缩。
有什么想法可以区分停顿和快进吗?
最佳答案
当用户“快进”或“跟踪”时,似乎没有事件发送。因此,我想出了自己的检测快进的方法。
<script>
var PAUSE_EVT_STACK = 0;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PAUSED)
PAUSE_EVT_STACK++;
if (event.data == YT.PlayerState.PLAYING)
PAUSE_EVT_STACK = 0;
if (event.data == YT.PlayerState.PAUSED && PAUSE_EVT_STACK <= 1)
console.log("Pause pressed");
else if (event.data == YT.PlayerState.PAUSED && PAUSE_EVT_STACK > 1) {
console.log("Tracking occuring");
console.log("Hey! Dont fast forward during my ad you douche");
}
}
function loadYouTubeVideo(uid) {
setTimeout( function() {
var instPlayer = new YT.Player(uid, {
height: 480,
width: 853,
enablejsapi: 1,
suggestedQuality: 'highres',
videoId: uid,
events: {
'onStateChange': onPlayerStateChange
}
});
}, 500);
}
</script>