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
广告
© . All rights reserved.