Le API JavaFX consentono di inserire audio e video nelle applicazioni RIAs in modo tale da poter distribuire contenuti media su device come TV, Smartphone e Tablet. In questo articolo vedremo come realizzare un semplice video player.
Definire una risorsa video
La classe javafx.scene.media.Media
rappresenta una risorsa media costruita a partire da un URI. Questa classe incapsula dati come durata, metadati, le tracce e risoluzione di un video.
Tali informazioni sono ottenute in modo asincrono e non sono quindi, in genere, immediatamente disponibili dopo la creazione dell'oggetto. Nelle linee di codice che seguono creiamo una risorsa media utilizzando l'URL di un video disponibile in Rete:
URL mediaUrl = new URL("http://techslides.com/demos/sample-videos/small.mp4");
Media media = new Media(mediaUrl.toExternalForm());
Costruire il Media Player
La classe javafx.scene.media.MediaPlayer
fornisce i controlli per la gestione del contenuto multimediale: pause()
, play()
, stop()
, seek()
e autoPlay()
. Altre funzionalità sono: il bilanciamento, il muto e il controllo del volume. Per la costruzione di un media player partendo dall'oggetto media appena istanziato, possiamo utilizzare il costruttore fornito dalla classe che accetta il tipo javafx.scene.media.Media
:
MediaPlayer player = new MediaPlayer(media);
player.setAutoPlay(true);
e definire dei pulsanti per l'esecuzione e lo stop del flusso video:
Button playButton = new Button("Play");
Button stopButton = new Button("Stop");
playButton.setOnAction((ActionEvent event) -> {
if (player.getStatus() == Status.PLAYING) {
player.stop();
player.play();
} else {
player.play();
}
});
stopButton.setOnAction((ActionEvent event) -> {
player.stop();
});
Una vista per la riproduzione del video
La classe MediaPlayer
non rappresenta un contenuto visuale per un lettore video, per questo motivo abbiamo la necessità di ricorrere all'utilizzo della classe javafx.scene.media.MediaView
. Questa classe fornisce una vista al lettore. Per poter visualizzare un lettore video non dobbiamo far altro che creare un oggetto MediaView passando al
costruttore della classe un oggetto MediaPlayer:
MediaView mediaView = new MediaView(player);
mediaView.setFitWidth(350);
mediaView.setFitHeight(200);
mediaView.setSmooth(true);
Completiamo il tutto con i controlli di layout tipici di una semplice applicazione JavaFX:
HBox controlBox = new HBox(5, playButton, stopButton);
VBox root = new VBox(5, mediaView, controlBox);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("Media Player Demo");
stage.show();