IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Mettre une video en java avec Netbeans


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut Mettre une video en java avec Netbeans
    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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    j'ai essayer en mettant un fichier .avi en html dans un JEditorPanel mais cela ne marche pas.
    Aider moi s'il vous plait

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    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/

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    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????

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    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.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    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

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Le site de VLCJ propose des exemples de code permettant ce que tu cherche.

    http://code.google.com/p/vlcj/w/list

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Citation Envoyé par sinok Voir le message
    Le site de VLCJ propose des exemples de code permettant ce que tu cherche.
    Et même pire que ca, tu as DL des sources test où tu as un code tout fait pres à fonctionner.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    le problème c'est que je ne comprend pas les exemple je débute

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    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.

  11. #11
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut Classe pour Lire les vidéos en java
    Bonjour,
    Voilà une classe complète qui t'arrangerais ...
    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
    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();
    			}
            }
    	}
    }

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    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
    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
     
    }
    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.

    il m'affiche "Exception in thread "Thread-3" java.lang.NullPointerException"
    Ou est l'erreur???

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    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.

Discussions similaires

  1. Réponses: 33
    Dernier message: 04/01/2014, 15h10
  2. Comment mettre une icône de fenêtre avec Linux ?
    Par tyrtamos dans le forum Tkinter
    Réponses: 6
    Dernier message: 26/06/2013, 23h11
  3. créer une routine d'installation pour appli java avec netbeans
    Par dummygreg dans le forum NetBeans Platform
    Réponses: 3
    Dernier message: 23/07/2009, 23h12
  4. Comment déployer une appli j2ee faite avec netbeans ?
    Par judas27 dans le forum NetBeans
    Réponses: 2
    Dernier message: 24/07/2007, 16h50
  5. Réponses: 5
    Dernier message: 15/02/2005, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo