0

我不知道如何将侦听器添加到视频播放中。我希望它最终在达到特定播放时间(即 10 秒)时停止。

我试过了:

while( video.currentTime != timeToStop){
            video.play();
        }

但这会导致浏览器挂起,可能是因为我一直在启动 video.play() 。

do while

导致同样的问题。

那我应该用什么?

4

2 回答 2

2

要跟踪视频的进度,您可以使用timeupdate事件并检查currentTime视频的属性是否已超过最大值。这是一个例子:

window.addEventListener("load", function () {
    var video = document.getElementById("video1"),
        timeToStop = 2;

    video.addEventListener("timeupdate", function () {
        if (this.currentTime >= timeToStop) {
            this.pause();
        }
    }, false);
}, false);

演示:http: //jsfiddle.net/eGw52/

(示例使用 2 秒,而不是 10 秒)

于 2013-07-10T21:09:19.917 回答
1

视频与承诺很好地配合。这是一个例程,它在特定时间点暂停并返回一个承诺,当这种情况发生时(或视频因其他原因暂停,或结束)。

function pause_at (video, t) {
    var promise=new Promise ();

    function reached() {
        promise.fulfill (video.currentTime);
        video.removeEventListener ("timeupdate", timeupdate);
        video.removeEventListener ("pause", reached);
    }

    function timeupdate () {
        if (video.currentTime >= t) {
            reached ();
            video.pause ();
        }
    }

    video.addEventListener ("timeupdate", timeupdate);
    video.addEventListener ("pause", reached);
    return promise;
}

用法:

pause_at (video,60).then (function () {alert ("At 60-second mark!");});
video.play ();

请注意,视频结束也被认为是视频“暂停”(触发了 pause 事件),因此当视频结束时,promise 也会实现。

根据您的喜好调整您最喜欢的 Promise 库。如果您想向后播放视频(负播放率),则需要解决此问题。:-)

于 2013-07-11T13:58:00.930 回答