HTML5视频 - 设置video.currentTime打破播放器

时间:2017-04-26 13:06:11

标签: javascript promise html5-video

我正在尝试与Chrome中的第三方html5视频播放器进行互动。因此,我能够获得有效的参考资料:

document.getElementsByTagName("video")[1]

... readyState是4,所以它都很好。

我可以成功(并且有预期的结果)致电:

document.getElementsByTagName("video")[1].play();
document.getElementsByTagName("video")[1].pause();

但是当我打电话时:

document.getElementsByTagName("video")[1].currentTime = 500;

...视频冻结,并且它没有前进到新的currentTime。视频持续时间远远超过500秒,因此它应该能够前进到那个位置。我已尝试过500次以外的其他时间,都有相同的结果。如果我检查currentTime,那么我刚刚设置的是正确的。但它实际上并没有去那里。此外,我无法再与视频互动。在我尝试设置play()后,它会忽略对pause()currentTime的任何调用。

之前我致电currentTime,当我致电play()时,我收到了这个有效的承诺,其他一切仍然有效: enter image description here

之后我致电currentTime,当我致电play()时,我收到了这个破损的承诺,现在该视频对象无效:enter image description here < / p>

如果您拥有Hulu帐户,只需在Chrome开发者控制台中尝试,就可以轻松地在任何视频中观察此行为。

编辑:有人向我指出,跳过很多次突破,但跳过一小段距离确实很有效。可能与散布的商业广告有关。

3 个答案:

答案 0 :(得分:1)

尝试下面的代码,它会先暂停然后设置你的位置然后再次播放

document.getElementsByTagName("video")[1].pause();
document.getElementsByTagName("video")[1].currentTime = 500;
document.getElementsByTagName("video")[1].play();

答案 1 :(得分:0)

为什么不试试这段代码。

function setTime(tValue) {
        //  if no video is loaded, this throws an exception 
            try {
                if (tValue == 0) {
                    video.currentTime = tValue;
                }
                else {
                    video.currentTime += tValue;
                }

             } catch (err) {
                 // errMessage(err) // show exception
             errMessage("Video content might not be loaded");
               }
     }

答案 2 :(得分:0)

PLS。试试这个:

hv = document.getElementsByTagName("video")[1];

hv.play();
hv.addEventListener('canplay', function() {
    this.currentTime = 500;
});