bonjour,
est il possible de lire différents fichiers sons de facon séquentielle avec MediaPlayer ?
en gros détecter la fin de lecture du fichier son avant de lancer automatiquement le suivant.
par avance merci
bonjour,
est il possible de lire différents fichiers sons de facon séquentielle avec MediaPlayer ?
en gros détecter la fin de lecture du fichier son avant de lancer automatiquement le suivant.
par avance merci
J'ai fait ça qui a l'air de plutôt bien fonctionner :
Grosso modo, il faut créer un nouveau Media et un nouveau MediaPlayer dès que le précédent est terminé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 public class MediaPlayerPlaylist extends Application { private final ReadOnlyObjectWrapper<MediaPlayer> player = new ReadOnlyObjectWrapper<>(this, "player"); @Override public void start(Stage primaryStage) throws Exception { final List<String> playlist = Arrays.asList( "C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3", "C:\\Users\\Public\\Music\\Sample Music\\Maid with the Flaxen Hair.mp3", "C:\\Users\\Public\\Music\\Sample Music\\Sleep Away.mp3"); final ToggleButton playButton = new ToggleButton("Play"); playButton.textProperty().bind(new StringBinding() { { bind(playButton.selectedProperty()); } @Override public void dispose() { unbind(playButton.selectedProperty()); super.dispose(); } @Override protected String computeValue() { return playButton.isSelected() ? "Pause" : "Play"; } }); playButton.selectedProperty().addListener(observable -> { if (playButton.isSelected()) { if (player.get() == null) { switchToMedia(0, playlist); } else { player.get().play(); } } else { player.get().pause(); } }); final ProgressBar progressBar = new ProgressBar(); progressBar.setMaxWidth(Double.MAX_VALUE); progressBar.progressProperty().bind(new DoubleBinding() { private final ObjectBinding<Duration> currentTime = Bindings.select(player, "currentTime"); private final ObjectBinding<Duration> totalDuration = Bindings.select(player, "totalDuration"); { bind(currentTime, totalDuration); } @Override public void dispose() { unbind(currentTime, totalDuration); currentTime.dispose(); totalDuration.dispose(); super.dispose(); } @Override protected double computeValue() { double result = 0; final Duration currentTime = this.currentTime.getValue(); final Duration totalDuration = this.totalDuration.getValue(); if (currentTime != null && totalDuration != null) { result = currentTime.toMillis() / totalDuration.toMillis(); } return result; } }); final BorderPane pane = new BorderPane(); pane.setCenter(playButton); pane.setBottom(progressBar); final Scene scene = new Scene(pane, 500, 500); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } private void switchToMedia(final int index, final List<String> playlist) { final String path = playlist.get(index); final File file = new File(path); final Media media = new Media(file.toURI().toString()); final MediaPlayer player = new MediaPlayer(media); player.setOnEndOfMedia(() -> { player.setOnEndOfMedia(null); final int nextIndex = (index + 1) % playlist.size(); switchToMedia(nextIndex, playlist); }); this.player.set(player); player.play(); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager