【问题标题】:HTML5 Video - Start video at certain time and play for x amount of timeHTML5 视频 - 在特定时间开始播放视频并播放 x 时间
【发布时间】:2018-07-02 20:11:15
【问题描述】:

我正在尝试创建在某个时间点开始我的本地视频并让它播放一段时间的按钮。我已经让它在特定时间播放,但不知道如何让它只播放特定时间。

这是代码。

HTML:

<video id="myvideo" width="1000">
        <source src="video.mp4" type="video/mp4">
        Your browser does not support HTML5 video.
</video>
    <div>
        <p>
            <button id="playme">Play/Pause Video</button>
        </p>
        <p>
            <button id="jump">Jump to 4 seconds</button>
        </p>
        <p>
            <button id="jump2">Jump to 11 seconds</button>
        </p>
    </div>

Javascript:

var myvideo = document.getElementById('myvideo'),
playbutton = document.getElementById('playme'),
jumplink = document.getElementById('jump'),
jumplink2 = document.getElementById('jump2');

jumplink.addEventListener("click", function (event) {
    event.preventDefault();
    myvideo.play();
    myvideo.pause();
    myvideo.currentTime = 4;
    myvideo.play();
}, false);

jumplink2.addEventListener("click", function (event) {
    event.preventDefault();
    myvideo.play();
    myvideo.pause();
    myvideo.currentTime = 11;
    myvideo.play();
}, false);

playbutton.addEventListener("click", function () {
    if (myvideo.paused) {
        myvideo.play();
    } else {
        myvideo.pause();
    }
}, false);

【问题讨论】:

  • 您没有提到您使用的是哪个浏览器,但如果是 Chrome,您可能遇到了错误。 bugs.chromium.org/p/chromium/issues/detail?id=1018533(多年来,类似的错误已经提交并关闭了无数次,因为它显然只出现在某些视频中。)

标签: javascript html video


【解决方案1】:

为了实现这一点,您需要在视频播放时轮询视频的 currentTime 属性,可能使用类似这样的通用代码...

var button = document.getElementById('play')
var video = document.getElementById('video');
var startTime = 10;
var endTime = 20;

button.addEventListener('click', playVideo, !1);

function playVideo(e) {

    function checkTime() {
        if (video.currentTime >= endTime) {
           video.pause();
        } else {
           /* call checkTime every 1/10th 
              second until endTime */
           setTimeout(checkTime, 100);
        }
    }

    video.currentTime = startTime;
    video.play();
    checkTime();
}

更新

让我们看看如何为您的应用实现这一点。

您有两个“跳转”按钮和一个播放按钮。当这些按钮中的任何一个被激活时,您可以调用一个函数,该函数根据单击按钮的 HTML id 设置开始时间和结束时间。这些值可以传递到我上面已经概述的函数中。

首先,为每个按钮分配一个事件监听器...

var myvideo = document.getElementById('myvideo');

/* add the same event and 
   handler function to each 
   of the three buttons */
var buttons = ['playme','jump','jump2'];

buttons.forEach(function(bn) {
    document.getElementById(bn).addEventListener(
        'click', buttonEvents, !1
    );
});

这里的三个 HTML 按钮中的每一个都会在单击时调用 buttonEvents() 函数。该函数可能看起来像这样......

function buttonEvents(e) {
    /* get the id of the clicked button */
    var element_id = e.target.id;
    /* E.G. element_id = 'playme', 'jump', or 'jump2' */

    /* declare variables before setting them */
    var timeStart = 0;
    var timeEnd = 0;

    /* set start and end values depending 
       on which button was clicked */
    switch(element_id) {
        case 'playme':
            /* example values... */
            timeStart = 0;
            timeEnd = 100; 
            break;
        case 'jump':
            timeStart = 4;
            timeEnd = 12;
            break;
        case 'jump2':
            timeStart = 12;
            timeEnd = 24;
    }

    /* call 'playVideo()' */
    playVideo(timeStart, timeEnd);
}

将您的“播放按钮”函数与上面概述的通用函数结合起来会给我们这样的结果:接收开始和结束时间作为参数的函数,如果视频暂停则播放视频,如果暂停则跳转到新的开始时间玩...

function playVideo(startTime, endTime) {

    function checkTime() {
        if (myvideo.currentTime >= endTime) {
           myvideo.pause();
        } else {
           /* call checkTime every 1/10th 
              second until endTime */
           setTimeout(checkTime, 100);
        }
    }

    /* stop if playing (otherwise ignored) */
    myvideo.pause();
    /* set video start time */
    myvideo.currentTime = startTime;
    /* play video */
    myvideo.play();
    /* check the current time and 
       pause IF/WHEN endTime is reached */
    checkTime();
}

希望有所帮助。

【讨论】:

  • 谢谢,但是如何在我当前的代码中实现它?还在学习javascript所以需要一点帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2022-07-22
  • 2023-02-22
  • 2014-04-07
  • 1970-01-01
  • 2014-09-10
相关资源
最近更新 更多