JavaFX - Media getDuration() 方法



在 JavaFX 中,getDuration() 方法是一个 getter 方法,用于检索与“Media”对象关联的媒体内容的持续时间,无需任何其他信息。

术语“Duration”表示媒体的时长或总播放时间,以秒为单位表示。

注意 - 返回的“Duration”对象可能包含秒的分数,为媒体应用程序中的精确播放控制和同步提供精确的计时。

语法

以下是“Media”类的“getDuration()”方法的语法:

public Duration getDuration()

参数

此方法不接受任何参数。

返回值

此方法返回“Duration”对象,表示媒体内容的长度。

示例

以下是getDuration()方法的基本示例:

在此示例中,我们使用音频文件并使用 getDuration() 方法检索音频文件的总时长。

import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
import javafx.util.Duration;
import java.io.File;
public class MediaGetDuration1 extends Application {
   @Override
   public void start(Stage primaryStage) {
      // Create a Media object representing the audio file
      String audioFile = "./audio_video/Hero1.mp3";
      Media media = new Media(new File(audioFile).toURI().toString());

      // Creating a MediaPlayer object from the Media Object
      MediaPlayer mediaPlayer = new MediaPlayer(media);

      mediaPlayer.setOnReady(() -> {
         // Get the duration of the media
         Duration duration = media.getDuration();
         double durationInSeconds = duration.toSeconds();
         // Print the duration
         System.out.println("Duration of the media file: " + durationInSeconds + " seconds");

         // Exiting the application
         primaryStage.close();
      });
      // Start the media player
      mediaPlayer.play();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

输出

以下是显示音频文件总时长的代码输出。

Duration of the media file: 149.81225 seconds

示例

在以下示例中,我们应用 getDuration() 方法来检索嵌入式视频文件的持续时间。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import javafx.util.Duration;

public class MediaGetDuration2 extends Application {
   @Override
   public void start(Stage primaryStage) {
      String videoFile = "./audio_video/sampleTP.mp4";        
      // Create a Media object with the video file
      Media media = new Media(getClass().getResource(videoFile).toString());        

      // Initialize a MediaPlayer with the Media object
      MediaPlayer mediaPlayer = new MediaPlayer(media);       

      // Create a MediaView and associate it with the MediaPlayer
      MediaView mediaView = new MediaView(mediaPlayer);

      // Create a StackPane to hold the MediaView
      StackPane root = new StackPane();
      root.getChildren().add(mediaView);

      Scene scene = new Scene(root, 550, 275);
      // Set the Scene to the Stage
      primaryStage.setScene(scene);
      primaryStage.setTitle("Running Media Duration Example");
      primaryStage.show();        

      // Play the media
      mediaPlayer.play();

      // Set a listener for when the MediaPlayer finishes playing
      mediaPlayer.setOnEndOfMedia(() -> {
         Duration duration = media.getDuration();
         // Convert duration from milliseconds to hours, minutes, and seconds
         long totalSeconds = (long) duration.toSeconds();
         long hours = totalSeconds / 3600;
         long minutes = (totalSeconds % 3600) / 60;
         long seconds = totalSeconds % 60;

         System.out.println("Duration of the video: " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds");

         primaryStage.close();
     });
   }    
   public static void main(String[] args) {
      launch(args);
   }
}

输出

以下是显示视频播放完成后以小时、分钟和秒为单位的总时长的输出。

Duration of the video: 0 hours, 2 minutes, 18 seconds
广告

© . All rights reserved.