如何在 Video.js 中获取当前播放时间?


Video.js 是一个库,允许您创建一个现代化外观且先进的视频播放器,支持所有传统的视频格式,如 mp4、Flv 等。此外,它还支持最新的视频格式,如 YouTube、Vimeo 等。在本教程中,我们将了解如何获取使用 Video.js 创建的视频播放器的当前播放时间。

Video.js 提供了灵活的控制能力,即使是视频播放器的细微方面也能轻松掌控。因此,在本教程中,我们将尝试获取视频播放器的当前播放时间。获取当前播放时间非常有用,因为它有很多应用,例如获取当前播放时间并在特定时间调用函数,或在特定时间暂停音乐播放器。因此,让我们继续本教程的下一部分,了解如何获取视频播放器的当前播放时间。

在 Video.js 中获取当前播放时间

前提条件 − 假设您知道如何使用 Video.js 库创建基本的视频播放器。

为了获取 Video.js 播放器的当前播放时间,我们将使用 Video.js 的默认方法。该方法称为 currentTime,它负责以秒为单位显示视频播放器的时间。使用此方法非常简单直接。我们只需要在视频播放器引用上调用 currentTime() 方法即可。

currentTime 方法不能在代码的 <html> 部分的“data-setup”属性中使用。它需要在代码的 <script> 部分中对播放器引用进行调用。

请考虑以下代码片段,该片段使用 Video.js 来警告视频播放器的当前播放时间:

<script>
   // Video Player Initialization
   let player = videojs('my-video-player');
   
   // Alerting the current Time of a video player
   let currentTime = player.currentTime();
   window.alert(`currentTime : ${currentTime}`);
</script>

在这里,我们为 id 为“my-video-player”的 <video> 元素创建了一个视频播放器。然后,我们在播放器上使用 currentTime 方法来获取视频播放器的当前时间(以秒为单位)。在最后一行,我们在浏览器窗口中警告了视频的当前时间。

示例 1

在完整的示例中使用上述代码片段来获取视频播放器的当前时间,看起来像这样:

<!DOCTYPE html>
<html>
<head>
   <title>Video.JS Current Playback Time Example</title>
   <!-- Importing Video.js CSS / JS using CDN URL -->
   <link href="https://vjs.zencdn.net/7.19.2/video-js.css" rel="stylesheet" />
   <script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
</head>
<body>
   <video
      id="my-video-player"
      class="video-js vjs-default-skin vjs-big-play-centered"
      autoplay="true"
      preload="true"
      controls="true"
      muted="true"
      fluid="true"
      poster=" https://tutorialspoint.com/videos/sample.png"
      data-setup='{}'
   >
   <source
      src="https://tutorialspoint.com/videos/sample720.mp4"
      type="video/mp4"
   >
   </video>
   <script>
      // Video Player Initialization
      let player = videojs('my-video-player');
      
      // Alerting the current Time of a video player
      let currentTime = player.currentTime();
      window.alert(`currentTime : ${currentTime}`);
   </script>
</body>
</html>

说明

在此代码示例中,我们实现了以下内容:

  • 首先,我们使用 CDN URL 在代码的 <head> 标记中导入了 Video.js 的 CSS 和 JS 文件。

  • 接下来,我们在 <body> 部分内为我们的视频播放器创建了一个 <video> 元素,它具有各种类,例如“video.js vjs-default-skin vjs-big-play-centered”和“my-video-player”(作为视频“id”)。

  • 我们还对 <video> 元素使用了一些标准的 HTML 视频选项,例如 controls 和 poster,并且我们还使用了 fluid 属性来使我们的视频播放器具有响应性。

  • 在 <script> 标记部分,我们使用 id 为“my-video-player”初始化了一个视频播放器,然后使用 currentTime 方法获取当前时间,然后使用 window.alert 方法将其显示在 Web 浏览器中。

当您在 Web 浏览器中执行上述代码时,您会注意到您会收到一个“currentTime: 0”的警报,然后您的视频播放器加载。Video.js 正在警告视频播放器的当前时间,在本例中为 0 秒。但这并不太有用,因为它每次我们重新加载视频播放器时都只显示 0 秒。

问题在于 currentTime 方法是在创建视频播放器时立即调用的。因此,此时播放时间仅为 0 秒。

假设您希望在视频播放时连续查看当前时间。为此,我们可以将“currentTime”方法与“timeupdate”事件监听器结合使用,该监听器每 15-200 毫秒更新时间变化。我们将记录每次“timeupdate”事件的视频播放器的当前播放时间。

请考虑以下代码片段,该片段在视频播放时间发生变化时立即记录当前播放时间:

<script>
   // Video Player Initialization
   let player = videojs('my-video-player');

   // Using time update event listener
   player.on('timeupdate', function () {

      // Get current time and log
      let currentTime = player.currentTime();
      console.log("Current Time of the Video Player: ", currentTime)
   });
</script>

在此代码片段中,我们首先使用 id 为“my-video-player”的 <video> 元素初始化我们的视频播放器。接下来,我们使用 player.on() 方法使用“timeupdate”事件监听器。在“timeupdate”方法中,我们使用 player.currentTime() 方法获取视频播放器的当前播放时间,然后最后将其记录在 Web 浏览器的控制台中。

示例 2

我们完整的示例,用于在每次时间更新事件时获取视频播放器的当前播放时间,如下所示:

<!DOCTYPE html>
<html>
<head>
   <title>Video.JS Current Playback Time Example</title>
   <!-- Importing Video.js CSS / JS using CDN URL -->
   <link href="https://vjs.zencdn.net/7.19.2/video-js.css" rel="stylesheet" />
   <script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
</head>
<body>
   <video
      id="my-video-player"
      class="video-js vjs-default-skin vjs-big-play-centered"
      autoplay="true"
      preload="true"
      controls="true"
      muted="true"
      fluid="true"
      poster="https://tutorialspoint.com/videos/sample.png"
      data-setup='{}'
   >
   <source
      src="https://tutorialspoint.com/videos/sample720.mp4"
      type="video/mp4"
   >
   </video>
   <script>
      // Video Player Initialization
      let player = videojs('my-video-player');

      // Using time update event listener
      player.on('timeupdate', function () {
      
         // Get current time and log
         let currentTime = player.currentTime();
         console.log("Current Time of the Video Player: ", currentTime)
      });
   </script>
</body>
</html>

说明

如您所见,在 <script> 部分,我们使用了 time update 事件监听器,该监听器每 15-250 毫秒触发一次,这意味着 time update 监听器内的函数将每秒触发 3-4 次。每次触发 time update 函数时,我们都会获取视频播放器的当前时间并将其记录到浏览器控制台中。

当上述代码在 Web 浏览器中执行时,将创建一个视频播放器,并且在浏览器的控制台选项卡中,您将每秒至少收到三到四次视频的当前播放时间。因此,控制台选项卡将有多个条目,例如“视频播放器的当前时间:1.527636”,其中 1.52 是视频播放器的当前播放时间(以秒为单位)。

因此,这就是您可以使用 currentTime 方法获取使用 Video.js 创建的视频播放器的当前播放时间的方法。

结论

在本教程中,我们了解了如何在 Video.js 中获取视频的当前播放时间。为此,我们使用了 Video.js 中默认提供的 current time 方法。此方法以秒为单位返回视频播放器的当前时间。我们还解释了如何使用此方法以及 time update 事件监听器,并提供了一个完整的可运行示例。

更新于:2023年8月4日

2K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.