saz*_*azr 4 javascript youtube-api
我正在使用Youtube Javascript API加载和播放网站嵌入视频.
当用户单击播放,暂停等时,存在表示这些状态的整数.例如:
YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED
为快进发送了什么状态消息?
请注意,当我说快进时,我的意思是拖动视频定时器,使视频前进或返回到视频中的某个点.
你知道当有人快进时我怎么能发现?
*编辑:*
经过多次检查后,我确定当您拖动时间栏时,会发送消息YT.PlayerState.PAUSED.这是一个主要问题,因为当用户暂停视频时,我会将视频缩小回原始大小.但是因为快进发送相同的消息作为暂停,视频将在某人快进的时候收缩,这是不应该发生的.
我有什么想法可以区分暂停和快进?
当用户"快进"或"曲目"时,似乎没有发送任何事件.所以我想出了自己的快速检测方法.
- 如果连续调度多个PAUSE事件:那么用户是"跟踪"(快进)
- 如果调度1且仅调用1个PAUSE事件:则用户已暂停.
<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>
Run Code Online (Sandbox Code Playgroud)