JavaFX - MediaPlayer getTotalDuration() Method



In JavaFX, the getTotalDuration() method in the MediaPlayer class is used to retrieve the total playback duration including all cycles (repetitions)

In addition, this is a getter method that returns the value of the 'totalDurationProperty'. This property represents the total amount of play time if allowed to play until finished.

If cycleCount is set to 'INDEFINITE', the return value of the getTotalDuration() method will also be 'INDEFINITE'. If the media duration is 'UNKNOWN', then the total duration will likewise be 'UNKNOWN'. Otherwise, the total duration will be the product of the cycle duration and cycle count.

Syntax

Following is the syntax of the 'getTotalDuration()' method of 'MediaPlayer' class −

public final Duration getTotalDuration()

Parameters

This method doesn't takes any parameter.

Return value

This method returns duration instance representing the total amount of the play time.

Example 1

Following is a basic example demonstrating the getTotalDuration() method of 'MediaPlayer' class −

In this example, we crate a media object and a mediaPlayer object to control playback. we set a listener that activates when the mediaPlayer is reddy, at which point we retrieve the total duration with getTotalDuration(). Then we print the media's total duration in seconds to the console.

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);
      });
   }
}

Output

Following is the output of the code −

Total Duration: 138.299 seconds

Example 2

In this example, we fetch the total duration of the media using the getTotalDuration() method after setting the MediaPlayer’s cycle count to indefinite.

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);
      });
   }
}

Output

Following is the output of the code indicates that the total duration is displayed as infinity.

Total Duration: Infinity seconds

Example 3

In this example, we set up the cycle count play 10 times, and then we retrieve the total duration of the mediaPlayer using the getTotalDuration() method.

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);
      });
   }
}

Output

Following is the output of the code −

Total Duration: 1528.20521541 seconds
Advertisements