Reproductor multimedia JavaFX

Mehvish Ashiq 15 febrero 2024
  1. Utilice JavaFX integrado para crear un reproductor multimedia
  2. Configure JavaFX y utilícelo para crear un reproductor multimedia
Reproductor multimedia JavaFX

En este artículo, aprenderemos a usar JavaFX para crear un reproductor multimedia en Java. Para hacer eso, usaremos el JavaFX incorporado y lo configuraremos manualmente.

Utilice JavaFX integrado para crear un reproductor multimedia

Para usar JavaFX incorporado, necesitamos tener Java 8 porque tiene JavaFX. No tenemos que instalarlo por separado.

Para esta sección, estamos utilizando las siguientes herramientas.

  • Java 8
  • NetBeans 13 (puede usar cualquier IDE de su elección)

Código de ejemplo (Main.java, la clase principal):

// write the package name (yours may be different)
package com.mycompany.main;

// import necessary libraries
import static javafx.application.Application.launch;

import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

// Main Class
public class Main extends Application {
  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

  /**
   *
   * @param primaryStage
   * @throws Exception
   */
  @Override
  public void start(Stage primaryStage) throws Exception {
    // path to the file
    final URL resource = getClass().getResource("/music/audio.mp3");

    // create Media Object and pass it the path of the audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 400, 200);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();

  } // end start
} // end Main Class

Para usar JavaFX, requerimos una clase de inicio principal, que tiene que extender la clase Application (una clase estándar en Java desde Java 8). El nombre de la clase de lanzamiento principal es Main, que también extiende la clase Application.

Podemos decir que la clase Principal es la subclase de la clase Application. Por lo tanto, necesita implementar todos los métodos abstractos, razón por la cual la clase Main anula el método start().

La función start() acepta un parámetro de tipo Stage. Es donde se muestran todas las secciones visuales de la aplicación JavaFX.

El objeto de tipo Stage lo crea el tiempo de ejecución de JavaFX. No tenemos que crear eso manualmente.

Dentro del método start(), obtenemos la ruta de un archivo de audio y lo guardamos en la variable resource, que se pasa en formato de cadena al constructor Media y luego se pasa al constructor MediaPlayer. A continuación, agregamos un mediaView para presentar/mostrar los medios, y es necesario.

Luego, este mediaView se agrega al Pane. Tenemos que añadir la Scene a un objeto Stage que se utilizará para mostrar algo en la ventana de la aplicación JavaFX.

Recuerde, todos los componentes que deben mostrarse en la aplicación JavaFX deben estar ubicados dentro de la Scene. Para este ejemplo, estamos añadiendo un objeto Scene a un Stage junto con la vista multimedia.

Después de eso, configuramos el título, configuramos la escena y reproducimos los medios una vez que se muestra el escenario.

Ahora, llegando al método main. ¿Sabe que podemos iniciar la aplicación JavaFX sin la función main() pero es útil cuando necesitamos pasar los parámetros de la línea de comandos a una aplicación?

Configure JavaFX y utilícelo para crear un reproductor multimedia

Para instalar JavaFX manualmente, necesitamos tener las siguientes cosas.

  • Java 18
  • NetBeans versión 13 (puede usar cualquier IDE de su elección)
  • Actualice los archivos module-info.java y pom.xml para instalar javafx.controls y javafx.media (el código completo de cada archivo se proporciona a continuación)
  • Estamos usando Maven para instalar dependencias. Puedes usar Gradle.

Código de ejemplo (archivo module-info.java):

module com.mycompany.test {
  requires javafx.controls;
  requires javafx.media;
  exports com.mycompany.test;
}

Código de ejemplo (archivo pom.xml):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>Test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>11</maven.compiler.release>
        <javafx.version>16</javafx.version>
        <javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>${javafx.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>${maven.compiler.release}</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin.version}</version>
                <configuration>
                    <mainClass>com.mycompany.test.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Código de ejemplo (App.java, la clase principal):

// write the package name (yours may be different)
package com.mycompany.test;

// import necessary libraries
import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {
  /**
   *
   * @param primaryStage
   */
  @Override
  public void start(Stage primaryStage) {
    // path to the file
    final URL resource = getClass().getResource("/music/video.mkv");

    // create Media Object and pass it the path of the video/audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 1080, 750);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();
  }

  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

} // end App class

En una aplicación Java, los archivos module-info.java y pom.xml residen en el default package y los Project Files. A continuación se muestra la captura de pantalla de todos los archivos en una aplicación Java para tener una comprensión clara.

reproductor multimedia javafx - archivos de proyecto

Este código es el mismo que el de la sección anterior, excepto que la diferencia es que nosotros instale JavaFX manualmente y reproduzca un archivo de video.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java JavaFX