JavaFX - MediaPlayer getTotalDuration() 方法



在 JavaFX 中,MediaPlayer 類中的 getTotalDuration() 方法用於檢索總播放時長,包括所有迴圈(重複)。

此外,這是一個 getter 方法,它返回 'totalDurationProperty' 的值。此屬性表示如果允許播放直到完成的總播放時間。

如果 cycleCount 設定為 'INDEFINITE',則 getTotalDuration() 方法的返回值也將為 'INDEFINITE'。如果媒體時長為 'UNKNOWN',則總時長同樣為 'UNKNOWN'。否則,總時長將是迴圈時長和迴圈次數的乘積。

語法

以下是 'MediaPlayer' 類的 'getTotalDuration()' 方法的語法:

public final Duration getTotalDuration()

引數

此方法不接受任何引數。

返回值

此方法返回一個 duration 例項,表示總播放時間。

示例 1

以下是一個演示 'MediaPlayer' 類的 getTotalDuration() 方法的基本示例:

在這個例子中,我們建立了一個媒體物件和一個 mediaPlayer 物件來控制播放。我們設定了一個在 mediaPlayer 準備好時啟用的監聽器,此時我們使用 getTotalDuration() 獲取總時長。然後我們將媒體的總時長(以秒為單位)列印到控制檯。

import javafx.application.Platform;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.util.Duration;
import java.io.File;
public class getTotalDurationEx {
   public static void main(String[] args) {
      Platform.startup(() -> {
         File mediaPath = new File("./audio_video/sampleTP.mp4");
         // Create a Media object
         Media media = new Media(mediaPath.toURI().toString());        
         // Create a MediaPlayer object for the Media.
         MediaPlayer mediaPlayer = new MediaPlayer(media);

         // Add a ready listener to the MediaPlayer to access the total duration.
         mediaPlayer.setOnReady(() -> {
            // Retrieve the total duration of the media.
            Duration totalDuration = mediaPlayer.getTotalDuration();
            System.out.println("Total Duration: " + totalDuration.toSeconds() + " seconds");
         });        
         // Prepare the MediaPlayer by setting the autoPlay to true.
         mediaPlayer.setAutoPlay(true);
      });
   }
}

輸出

以下是程式碼的輸出:

Total Duration: 138.299 seconds

示例 2

在這個例子中,我們在將 MediaPlayer 的迴圈次數設定為無限後,使用 getTotalDuration() 方法獲取媒體的總時長。

import javafx.application.Platform;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.util.Duration;
import java.io.File;
public class getTotalDurationEx {
   public static void main(String[] args) {
      Platform.startup(() -> {
         File mediaPath = new File("./audio_video/sampleTP.mp4");
         // Create a Media object
         Media media = new Media(mediaPath.toURI().toString());        
         // Create a MediaPlayer object for the Media.
         MediaPlayer mediaPlayer = new MediaPlayer(media);
         // Set the cycle count to indefinite, meaning the media will play endlessly.
         mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);

         // Add a ready listener to the MediaPlayer to access the total duration.
         mediaPlayer.setOnReady(() -> {
            // Retrieve the total duration of the media.
            Duration totalDuration = mediaPlayer.getTotalDuration();
            System.out.println("Total Duration: " + totalDuration.toSeconds() + " seconds");
         });        
         // Prepare the MediaPlayer by setting the autoPlay to true.
         mediaPlayer.setAutoPlay(true);
      });
   }
}

輸出

以下程式碼的輸出表明總時長顯示為無限大。

Total Duration: Infinity seconds

示例 3

在這個例子中,我們將迴圈次數設定為播放 10 次,然後我們使用 getTotalDuration() 方法檢索 mediaPlayer 的總時長。

import javafx.application.Platform;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.util.Duration;
import java.io.File;
public class getTotalDurationEx {
   public static void main(String[] args) {
      Platform.startup(() -> {
         File mediaPath = new File("./audio_video/Hero2.mp3");
         // Create a Media object
         Media media = new Media(mediaPath.toURI().toString());        
         // Create a MediaPlayer object for the Media.
         MediaPlayer mediaPlayer = new MediaPlayer(media);
         // Set the cycle count to 10, meaning the media will repeat 10 times.
         mediaPlayer.setCycleCount(10);

         // Add a ready listener to the MediaPlayer to access the total duration.
         mediaPlayer.setOnReady(() -> {
            // Retrieve the total duration of the media.
            Duration totalDuration = mediaPlayer.getTotalDuration();
            System.out.println("Total Duration: " + totalDuration.toSeconds() + " seconds");
         });        
         // Prepare the MediaPlayer by setting the autoPlay to true.
         mediaPlayer.setAutoPlay(true);
      });
   }
}

輸出

以下是程式碼的輸出:

Total Duration: 1528.20521541 seconds
廣告