如何在 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.tw/videos/sample.png"
      data-setup='{}'
   >
   <source
      src="https://tutorialspoint.tw/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.tw/videos/sample.png"
      data-setup='{}'
   >
   <source
      src="https://tutorialspoint.tw/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.