我正在使用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>

09-06 05:19