Lire les métadonnées d'un média avec JavaFX

Le code suivant vous montre comment lire les métadonnées d'un fichier audio avec JavaFX.

import java.io.IOException;

import javafx.application.Application;
import javafx.collections.MapChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class MetaDataExample extends Application {

	private VBox metadataVBox = new VBox();

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

	@Override
	public void start(Stage stage) throws IOException {

		ScrollPane root = new ScrollPane();
		root.setContent(metadataVBox);

		Scene scene = new Scene(root, 640, 480);
		stage.setScene(scene);

		/* Le media avec le chemin du fichier audio */
		Media media = new Media("file:///chemin/vers/le/fichier.mp3");

		/* Enregistrement du listener */
		media.getMetadata().addListener(this::onMetadataChange);

		/* Affiche la fenêtre */
		stage.show();

	}

	/**
	 * Cette fonction est appelée lorsque les métadonnées sont initialisées ou
	 * changées
	 */
	private void onMetadataChange(MapChangeListener.Change<? extends String, ? extends Object> metadata) {

		/* Si l'image de l'album est initialisée ou modifiée */
		if (metadata.getKey().equals("image")) {
			/* Récupération de la métadonnée image */
			ImageView albumArt = new ImageView((Image) metadata.getValueAdded());
			metadataVBox.getChildren().add(albumArt);
		} else {
			/* Récupération des autres métadonnées
			 * Affichage Clé: Valeur */
			String formattedString = metadata.getKey() + ": " + metadata.getValueAdded();
			metadataVBox.getChildren().add(new Label(formattedString));
		}

	}

}

Commentaires