Bonjour,
j'aimerai savoir s'il était possible de mettre une video en java en utilisant Netbeans??
Si oui comment fait-ont???
merci d'avance pour vos réponces
Version imprimable
Bonjour,
j'aimerai savoir s'il était possible de mettre une video en java en utilisant Netbeans??
Si oui comment fait-ont???
merci d'avance pour vos réponces
j'ai essayer en mettant un fichier .avi en html dans un JEditorPanel mais cela ne marche pas.
Aider moi s'il vous plait
Il n'est rien prévu de standard dans java pour lire une vidéo.
Une des solution les plus potables est d'utiliser les bindings VLC
http://code.google.com/p/vlcj/
Tout d'abord merci pour ta réponse.
J'ai télécharger vlc-1.1.3,vlc-1.1.3 javadoc,vlc-1.1.3 sources,vlc-1.1.3 test, et vlc-1.1.3 test sources
par contre comment le mettre dans Netbeans et l'utiliser????
Il te faut aussi le jna et le log4j.
Ensuite pour l'ajouter à ton projet, va dans outils-> bibliothèque
tu fait nouvelle bibliothèque
dans le pemier onglet tu met :
- vlc-1.1.3.jar
- vlc-1.1.3-test-sources(pourquoi pas)
- jna-3.2.4.jar
- log4j-1.3alpha-8.jar
dans les sources :
- vlc-1.1.3-sources.jar
dans la doc :
- vlc-1.1.3-javadoc.jar
et ensuite dans ton projet
tu fait clique droit sur bibliotheque -> ajouter une bibliotheque
Et tu y ajoute la bibliotheque que tu viens de créer.
merci pour m'avoir expliquer comment créer une bibliothéque.
Maintenant j'aimerez savoir comment mettre une video et qu'il me la lise.
Sachant que ma video s'appelle test.avi
et que ma bibliotheque s'appelle Video
Le site de VLCJ propose des exemples de code permettant ce que tu cherche.
http://code.google.com/p/vlcj/w/list
le problème c'est que je ne comprend pas les exemple je débute
Commence donc par suivre des tutoriel permettant de débuter en java par des programmes simples afin de comprendre le langage. Et non pas te jeter tête baissée dans des API avancées dont tu ne peux comprendre le fonctionnement sans avoir déjà étudié le langage.
http://bruce-eckel.developpez.com/li...aduction/tij2/
Je te conseille de mettre temporairement ton idée de player de coté pour revenir aux bases: structures de bases du langage, compréhension des principes objet, manipulation des flux de données et ainsi de suite.
Bonjour,
Voilà une classe complète qui t'arrangerais ...
Code:
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380 import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.media.Controller; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.DurationUpdateEvent; import javax.media.GainControl; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; import javax.media.PrefetchCompleteEvent; import javax.media.RealizeCompleteEvent; import javax.media.Time; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class test extends JFrame implements ControllerListener, Runnable { // Attributs de la classe private JTextField fldAffichageDuree; private JTextField fldAffichagePosition; private JLabel lbVolume; private JButton bPlay = null; private JButton bPause = null; private JButton bStop = null; private JSlider sSlider; private JSlider sVolume; private Player player; private String repertoire = "file:Vidéos/"; private String urlFilm; private Time duree; private JPanel videoPanel; private float t0; private float t1; private boolean intervalle; protected GainControl gain = null; boolean running; static Thread t; /** * WMediaPlayer : Constructeur qui permet de créer l'interface graphique * * @_nomFichier String : Nom du fichier du film à visualiser * @_t0 float : Temps (en secondes) depuis où l'on veut visualiser la vidéo * S'il est vide, voir depuis le début * @_t1 float : Temps (en secondes) jusqu'où où l'on veut visualiser la vidéo * S'il est vide, voir depuis le début * @_intervalle boolean : Soit on visualise toute la vidéo, soit un intervalle */ public test(String _nomFichier, float _t0, float _t1, boolean _intervalle) { // Appel du constructeur de JFrame super(); // Récupérer les paramètres t0 = _t0; t1 = _t1; intervalle = _intervalle; // Vérifier que le nom du fichier passé en paramètre ne soit pas nul // Si c'est en ordre, chargement du film if (_nomFichier != null) fChargerFilm(_nomFichier); // Evénement lors de la fermeture du player addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { // Fermer le player if (player != null) { player.close(); } } } ); } /** * fChargerFilm : Cette méthode permet de charger le film passé en paramètre * * @_nomFichier String : Nom du fichier du film à visualiser */ public void fChargerFilm(String _nomFichier) { // Définir l'URL en fonction du nom du fichier urlFilm = repertoire + _nomFichier + ".avi"; // Création du player try { player = Manager.createPlayer(new MediaLocator(urlFilm)); player.addControllerListener(this); // Si la création du player est en ordre, attributs de la fenêtre setLocation(400, 200); setTitle("Player"); setVisible(true); // Cette fonction permet au player d'acquérir toutes les informations // et toutes les ressources qui lui sont nécessaires sur le média JOptionPane.showMessageDialog(this, "Acquésition des ressources et des informations média en cours. \nPatientez S'il vous plait. : ", "Information", JOptionPane.WARNING_MESSAGE); player.realize(); player.start(); //fGestionTemps(); } catch (Exception error) { // Afficher un message d'erreur si nécessaire JOptionPane.showMessageDialog(this, "Erreur lors de la création du player !\nMessage d'erreur : " +error.getMessage(), "Attention", JOptionPane.WARNING_MESSAGE); return; } } /** * controllerUpdate : Cette fonction intercepte tous les événements en * provenance du playser (gestionnaire d'événements) * * @_event ControllerEvent : Un événement est intervenu sur un des composants */ public void controllerUpdate(ControllerEvent _event) { // Donner la durée du film if (_event instanceof DurationUpdateEvent) { duree = ((DurationUpdateEvent) _event).getDuration(); } // Créer les composants et les événements if (_event instanceof RealizeCompleteEvent ) { // Création des composants bPlay = new JButton(new ImageIcon ("img/play.png")); bPause = new JButton(new ImageIcon ("img/pause.png")); bStop = new JButton(new ImageIcon ("img/stop.png")); fldAffichageDuree = new JTextField(); fldAffichagePosition = new JTextField(); lbVolume = new JLabel("Volume"); // Récupérer le temps du film pour spécifier la barre de progression // et l'afficher duree = player.getDuration(); sSlider = new JSlider(JSlider.HORIZONTAL,0,(int)(duree.getSeconds()),0); sVolume = new JSlider(JSlider.HORIZONTAL,0,10,10); // Gestionnaire d'événement sur le slider sSlider.addChangeListener ( new ChangeListener() { // Lorsque le curseur se déplace public void stateChanged(ChangeEvent arg0) { // Déplacer la position du film float l_tempCourant = sSlider.getValue(); player.setMediaTime(new Time(l_tempCourant)); } } ); // Paramètres de la barre de progression sSlider.setMajorTickSpacing((int) duree.getSeconds()/10); sSlider.setMinorTickSpacing(2); sSlider.setPaintTicks(true); sSlider.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); // Gestionnaire d'événement sur le slider du volume sVolume.addChangeListener ( new ChangeListener() { // Lorsque le curseur se déplace public void stateChanged(ChangeEvent arg0) { // Dès que l'utilisateur modifie la position du slider // ==> modifier la valeur du volume en conséquence // Récupérer la valeur du slider (de 0 à 10) int l_valeurVolume = sVolume.getValue(); // Le gain est compris entre 0 et 1, donc multiplication par 0.1 gain.setLevel((float) (l_valeurVolume * 0.1)); } } ); // Panel regroupant les informations pour le volume JPanel pVolume = new JPanel(); pVolume.add(lbVolume); pVolume.add(sVolume); // Panel regroupant les boutons JPanel pBouton = new JPanel(new FlowLayout()); pBouton.add(bPlay); pBouton.add(bPause); pBouton.add(bStop); // Panel regroupant les afficheurs JPanel pAfficheur = new JPanel(new BorderLayout()); pAfficheur.add(fldAffichageDuree, BorderLayout.NORTH); pAfficheur.add(fldAffichagePosition, BorderLayout.CENTER); pAfficheur.add(pVolume, BorderLayout.SOUTH); // Panel regroupant la barre de progression, les boutons et l'afficheur JPanel pControle = new JPanel(new BorderLayout()); pControle.add(sSlider, BorderLayout.NORTH); pControle.add(pAfficheur, BorderLayout.CENTER); pControle.add(pBouton, BorderLayout.SOUTH); // Paramètres de l'afficheur fldAffichageDuree.setEditable(false); fldAffichagePosition.setEditable(false); fldAffichageDuree.setText("Durée du film : "+(float)duree.getSeconds()/60 + " minutes"); if (videoPanel == null) { // Création du panel videoPanel = new JPanel(); videoPanel.setLayout(new BorderLayout()); getContentPane().add(videoPanel, BorderLayout.CENTER); } else videoPanel.removeAll(); // Récupérer le composant contenant l'image provenant du player Component vis = player.getVisualComponent(); if (vis != null) { // Ok donc ajout de l'aspect visuel du média videoPanel.add(vis, BorderLayout.CENTER); videoPanel.add(pControle, BorderLayout.SOUTH); videoPanel.setVisible(true); this.pack(); } // Evénements sur les boutons // Bouton "play" bPlay.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { player.start(); // FAIRE QUE LE THREAD CONTINUE } } ); // Bouton "pause" bPause.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { // METTRE LE THREAD EN PAUSE try { t.wait(); } catch (InterruptedException e1) { e1.printStackTrace(); } player.stop(); player.deallocate(); } } ); // Bouton "stop" bStop.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { player.stop(); player.deallocate(); // Remettre la vidéo au début player.setMediaTime(new Time(0)); // Remettre à la barre de progression à 0 sSlider.setValue(0); if (player.getTargetState() < Player.Started) player.prefetch(); // ARRETER LE THREAD } } ); // Placer la vidéo à l'endroit approprié player.setMediaTime(new Time(t0)); sSlider.setValue((int) t0); } if (_event instanceof PrefetchCompleteEvent) { // Récupérer le gain du player gain = (GainControl) player.getControl("javax.media.GainControl"); } } public static void main(String[] args) { //new test("Issco-35", 0, 0, false); t = new Thread(new test("Issco-35", 0, 0, false)); t.start(); } public void run() { // Etat du player int state = player.getState(); while (state != Controller.Started) { try { t.sleep(100); state = player.getState(); } catch( Exception e ) { e.printStackTrace(); } } while(t.isAlive()) { try { Time time = player.getMediaTime(); state = player.getState(); double seconds = time.getSeconds(); if (seconds >= 0.0d) { System.out.println( "Time: " + seconds); } if (state != Controller.Started && state != Controller.Prefetching && state != Controller.Realizing ) { running = false; } t.sleep(1000); } catch( Exception e ) { e.printStackTrace(); } } } }
J'ai essayer ton code avec un fichier avi que j'ai appeller test et les boutons play.gif,stop.gif et pause.gif tout dans le src.Code:
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403 import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.media.Controller; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.DurationUpdateEvent; import javax.media.GainControl; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; import javax.media.PrefetchCompleteEvent; import javax.media.RealizeCompleteEvent; import javax.media.Time; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class test extends JFrame implements ControllerListener, Runnable { // Attributs de la classe private JTextField fldAffichageDuree; private JTextField fldAffichagePosition; private JLabel lbVolume; private JButton bPlay = null; private JButton bPause = null; private JButton bStop = null; private JSlider sSlider; private JSlider sVolume; private Player player; private String repertoire = "src/"; private String urlFilm; private Time duree; private JPanel videoPanel; private float t0; private float t1; private boolean intervalle; protected GainControl gain = null; boolean running; static Thread t; /** * WMediaPlayer : Constructeur qui permet de créer l'interface graphique * * @_nomFichier String : Nom du fichier du film à visualiser * @_t0 float : Temps (en secondes) depuis où l'on veut visualiser la vidéo * S'il est vide, voir depuis le début * @_t1 float : Temps (en secondes) jusqu'où où l'on veut visualiser la vidéo * S'il est vide, voir depuis le début * @_intervalle boolean : Soit on visualise toute la vidéo, soit un intervalle */ public test(String _nomFichier, float _t0, float _t1, boolean _intervalle) { // Appel du constructeur de JFrame super(); // Récupérer les paramètres t0 = _t0; t1 = _t1; intervalle = _intervalle; // Vérifier que le nom du fichier passé en paramètre ne soit pas nul // Si c'est en ordre, chargement du film if (_nomFichier != null) fChargerFilm(_nomFichier); // Evénement lors de la fermeture du player addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { // Fermer le player if (player != null) { player.close(); } } } ); } /** * fChargerFilm : Cette méthode permet de charger le film passé en paramètre * * @_nomFichier String : Nom du fichier du film à visualiser */ public void fChargerFilm(String _nomFichier) { // Définir l'URL en fonction du nom du fichier urlFilm = repertoire + _nomFichier + ".avi"; // Création du player try { player = Manager.createPlayer(new MediaLocator(urlFilm)); player.addControllerListener(this); // Si la création du player est en ordre, attributs de la fenêtre setLocation(400, 200); setTitle("Player"); setVisible(true); // Cette fonction permet au player d'acquérir toutes les informations // et toutes les ressources qui lui sont nécessaires sur le média JOptionPane.showMessageDialog(this, "Acquésition des ressources et des informations média en cours. \nPatientez S'il vous plait. : ", "Information", JOptionPane.WARNING_MESSAGE); player.realize(); player.start(); //fGestionTemps(); } catch (Exception error) { // Afficher un message d'erreur si nécessaire JOptionPane.showMessageDialog(this, "Erreur lors de la création du player !\nMessage d'erreur : " +error.getMessage(), "Attention", JOptionPane.WARNING_MESSAGE); return; } } /** * controllerUpdate : Cette fonction intercepte tous les événements en * provenance du playser (gestionnaire d'événements) * * @_event ControllerEvent : Un événement est intervenu sur un des composants */ public void controllerUpdate(ControllerEvent _event) { // Donner la durée du film if (_event instanceof DurationUpdateEvent) { duree = ((DurationUpdateEvent) _event).getDuration(); } // Créer les composants et les événements if (_event instanceof RealizeCompleteEvent ) { // Création des composants bPlay = new JButton(new ImageIcon ("play.gif")); bPause = new JButton(new ImageIcon ("pause.gif")); bStop = new JButton(new ImageIcon ("stop.gif")); fldAffichageDuree = new JTextField(); fldAffichagePosition = new JTextField(); lbVolume = new JLabel("Volume"); // Récupérer le temps du film pour spécifier la barre de progression // et l'afficher duree = player.getDuration(); sSlider = new JSlider(JSlider.HORIZONTAL,0,(int)(duree.getSeconds()),0); sVolume = new JSlider(JSlider.HORIZONTAL,0,10,10); // Gestionnaire d'événement sur le slider sSlider.addChangeListener ( new ChangeListener() { // Lorsque le curseur se déplace public void stateChanged(ChangeEvent arg0) { // Déplacer la position du film float l_tempCourant = sSlider.getValue(); player.setMediaTime(new Time(l_tempCourant)); } } ); // Paramètres de la barre de progression sSlider.setMajorTickSpacing((int) duree.getSeconds()/10); sSlider.setMinorTickSpacing(2); sSlider.setPaintTicks(true); sSlider.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); // Gestionnaire d'événement sur le slider du volume sVolume.addChangeListener ( new ChangeListener() { // Lorsque le curseur se déplace public void stateChanged(ChangeEvent arg0) { // Dès que l'utilisateur modifie la position du slider // ==> modifier la valeur du volume en conséquence // Récupérer la valeur du slider (de 0 à 10) int l_valeurVolume = sVolume.getValue(); // Le gain est compris entre 0 et 1, donc multiplication par 0.1 gain.setLevel((float) (l_valeurVolume * 0.1)); } } ); // Panel regroupant les informations pour le volume JPanel pVolume = new JPanel(); pVolume.add(lbVolume); pVolume.add(sVolume); // Panel regroupant les boutons JPanel pBouton = new JPanel(new FlowLayout()); pBouton.add(bPlay); pBouton.add(bPause); pBouton.add(bStop); // Panel regroupant les afficheurs JPanel pAfficheur = new JPanel(new BorderLayout()); pAfficheur.add(fldAffichageDuree, BorderLayout.NORTH); pAfficheur.add(fldAffichagePosition, BorderLayout.CENTER); pAfficheur.add(pVolume, BorderLayout.SOUTH); // Panel regroupant la barre de progression, les boutons et l'afficheur JPanel pControle = new JPanel(new BorderLayout()); pControle.add(sSlider, BorderLayout.NORTH); pControle.add(pAfficheur, BorderLayout.CENTER); pControle.add(pBouton, BorderLayout.SOUTH); // Paramètres de l'afficheur fldAffichageDuree.setEditable(false); fldAffichagePosition.setEditable(false); fldAffichageDuree.setText("Durée du film : "+(float)duree.getSeconds()/60 + " minutes"); if (videoPanel == null) { // Création du panel videoPanel = new JPanel(); videoPanel.setLayout(new BorderLayout()); getContentPane().add(videoPanel, BorderLayout.CENTER); } else videoPanel.removeAll(); // Récupérer le composant contenant l'image provenant du player Component vis = player.getVisualComponent(); if (vis != null) { // Ok donc ajout de l'aspect visuel du média videoPanel.add(vis, BorderLayout.CENTER); videoPanel.add(pControle, BorderLayout.SOUTH); videoPanel.setVisible(true); this.pack(); } // Evénements sur les boutons // Bouton "play" bPlay.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { player.start(); // FAIRE QUE LE THREAD CONTINUE } } ); // Bouton "pause" bPause.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { // METTRE LE THREAD EN PAUSE try { t.wait(); } catch (InterruptedException e1) { e1.printStackTrace(); } player.stop(); player.deallocate(); } } ); // Bouton "stop" bStop.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { player.stop(); player.deallocate(); // Remettre la vidéo au début player.setMediaTime(new Time(0)); // Remettre à la barre de progression à 0 sSlider.setValue(0); if (player.getTargetState() < Player.Started) player.prefetch(); // ARRETER LE THREAD } } ); // Placer la vidéo à l'endroit approprié player.setMediaTime(new Time(t0)); sSlider.setValue((int) t0); } if (_event instanceof PrefetchCompleteEvent) { // Récupérer le gain du player gain = (GainControl) player.getControl("javax.media.GainControl"); } } public static void main(String[] args) { //new test("Issco-35", 0, 0, false); t = new Thread(new test("test", 0, 0, false)); t.start(); } public void run() { // Etat du player int state = player.getState(); while (state != Controller.Started) { try { t.sleep(100); state = player.getState(); } catch( Exception e ) { e.printStackTrace(); } } while(t.isAlive()) { try { Time time = player.getMediaTime(); state = player.getState(); double seconds = time.getSeconds(); if (seconds >= 0.0d) { System.out.println( "Time: " + seconds); } if (state != Controller.Started && state != Controller.Prefetching && state != Controller.Realizing ) { running = false; } t.sleep(1000); } catch( Exception e ) { e.printStackTrace(); } } } // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 300, Short.MAX_VALUE) ); pack(); }// </editor-fold> // Variables declaration - do not modify // End of variables declaration }
il m'affiche "Exception in thread "Thread-3" java.lang.NullPointerException"
Ou est l'erreur???
A la ligne indiquée dans la stacktrace.
Toutefois cette solution utilise JMF qui est un choix très discuttable vu le peu de support niveu formats comparé à ce que gère VLC.