使用 Javascript 在特定时间后停止播放

Stop playback after a specific time using Javascript

我正在使用 Twine(一种使用 html、css 和 javascript 的叙事引擎)开发手机游戏,并希望开始播放背景视频按下按钮 5 秒。 5 秒后视频应该暂停。如果我再次按下按钮,视频应该会继续播放 5 秒(时间轴进一步向下移动),然后再次暂停。

这是我目前所拥有的。

<video id="myVideo">
  <source src="./video.mp4" type="video/mp4">
  <source src="mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>

<script> 
var vid = document.getElementById("myVideo");
    
function playVid() { 
  vid.play(); 
} 

</script> 

<button onclick="playVid()" type="button">Play Video</button>

有人可以帮忙吗?

非常感谢

您可能正在寻找 setTimeout 函数 - 在 vid.play().

之后

它在指定的时间后安排一个函数到 运行,returns 对计时器的引用,因此您可以通过调用 clearTimeout.[=13= 来取消它]

您可能需要考虑如果有人在视频播放时也单击了按钮,您希望发生什么。

  • 不要使用 on* 内联属性处理程序。使用 addEventListener 代替
  • 以非 render-blocking 方式放置您的 <script> 标签,就在结束 </body> 标签之前。
  • 使用 setTimeout 安排 函数调用,或执行一些代码 — 在 N 毫秒后

// DOM utility functions:

const el = (sel, par) => (par||document).querySelector(sel);


// Task:

const elVideo = el("#myVideo");
const elPlayVideo = el("#playVideo");
const timePause = 5000; // ms time to pause
let playTimeout;

const playVideo = () => { 
  clearTimeout(playTimeout);   // Clear any occurring timeouts
  elVideo.play();              // Play video
  elPlayVideo.disabled = true; // Disable click

  playTimeout = setTimeout(() => {
    elVideo.pause();              // Pause video
    elPlayVideo.disabled = false; // Enable button click
  }, timePause);                  // Wait N milliseconds
};

elPlayVideo.addEventListener("click", playVideo);
video {
  height: 150px;
}
<video id="myVideo" src="https://raw.githubusercontent.com/Ahmetaksungur/aksvideoplayer/main/videos/video-360.mp4"></video>
<button id="playVideo" type="button">Play Video</button>
<!-- Stop using inline on* handlers attributes. -->

<!-- <script> should go here, right before the closing `</body>` tag. -->