Applet

Bonjour la zone,

j’ai beau chercher sur la zone ou sur google je n’ai rien trouvé de satifsaisant pourtant le problème ne me semble pas si dur que cela.

Alors wala j’aimerai savoir si quelqu’un a de bon(ne)s tuto/bouquins/sources à me conseiller pour réaliser une applet qui serait en fait un lecteur vidéo (au format .flv).

Je privilégie largment les tutos et les bouquins au code source.

Wala merci à vous.

++ Le Duc.

Histoire de changer je vais me répondre .

J’ai trouvé ce code mais je n’arrive pas à le faire tourner si d’autres s’y essaient et y parviennent merci de me dire comment ils ont procédé.

Here it is :

la classe MediaPlayer

[code]package videoPlayer;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.DurationUpdateEvent;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JToggleButton;

/*****************************

  • MediaPlayer Class *
    *****************************/
    public class MediaPlayer extends JPanel implements ControllerListener
    {
    private Player player = null;
    private JPanel videoPanel = null;
    private JSlider slider = null;
    private volatile Thread slider_updater = null;
    private volatile boolean follows_slider = false;
    private JToggleButton start_stop = new JToggleButton();
    float step = 1.0f / 10;

    private JMenuBar menu_bar = null; // menu bar used for the different Buttons
    private JFrame frame = null; // frame used to open a file
    private JFileChooser fileChooser = null; // used for the dialog window to open a file
    private File file;

    /* Various Buttons */
    private JButton open = null;
    private JButton play = null;
    private JButton pause = null;
    private JButton stop = null;
    private JButton segment = null;
    private JButton about = null;

    /***********************************************

    • MediaPlayer Builder *

    • needs the address of a movie as an argument *
      ***********************************************/
      public MediaPlayer( String nomFilm )
      {

      super(); /* Constructs a new frame that is initially invisible.
      This constructor sets the component’s locale property to the value returned by JComponent./
      setLocation( 400, 200 ); /
      Moves this component to a new location. The top-left corner of the new location is specified by the
      x and y parameters in the coordinate space of this component’s parent. /
      setName(“Video Player”); // Sets the title for this frame to the specified string.
      setLayout( new BorderLayout() ); /
      Sets the layout manager for this container.
      Constructs a new border layout with no gaps between components. */
      if ( nomFilm != null)
      loadMovie( nomFilm ); // load the movie
      }

    /******************************************

    • method of loading of film from its URL *
      ******************************************/
      private void loadMovie( String movieURL )
      {
      if ( movieURL.indexOf( “:” ) < 3 ) movieURL = “file:” + movieURL;
      try
      { // creation of the player

       player = Manager.createPlayer( new MediaLocator( movieURL ) );
       player.addControllerListener( this );
       player.realize();
      

      }
      catch (Exception e)
      {
      System.out.println(“Error creating player”);
      return;
      }
      }

    /********************************************************

    • intercept all the events in provenence of the player *
      ********************************************************/
      public void controllerUpdate( ControllerEvent controllerEvent )
      {
      // to change the icon of tje player
      Toolkit tk = Toolkit.getDefaultToolkit();
      //setIconImage(new ImageIcon(“icons/icon.gif”).getImage());

      // to give the duration of the movie
      if (controllerEvent instanceof DurationUpdateEvent)
      {
      Time duration= ((DurationUpdateEvent) controllerEvent).getDuration();
      System.out.println( “duration: " + (int)duration.getSeconds()+” seconds");
      }

      // to start the video and create all the buttons etc…
      if ( controllerEvent instanceof RealizeCompleteEvent )
      {
      if (menu_bar == null)
      {
      //creation of the menu bar
      menu_bar = new JMenuBar();

      //creation of the different buttons with the icons
      

      open = new JButton(new ImageIcon (“icons/open.gif”));
      open.setMargin(new Insets( 0, 0, 0, 0));
      play = new JButton(new ImageIcon (“icons/play.gif”));
      play.setMargin(new Insets( 0, 0, 0, 0));
      pause = new JButton(new ImageIcon (“icons/pause.gif”));
      pause.setMargin(new Insets( 0, 0, 0, 0));
      stop = new JButton(new ImageIcon (“icons/stop.gif”));
      stop.setMargin(new Insets( 0, 0, 0, 0));
      segment = new JButton(new ImageIcon (“icons/segment.gif”));
      segment.setMargin(new Insets( 0, 0, 0, 0));
      about = new JButton(new ImageIcon (“icons/about.gif”));
      about.setMargin(new Insets( 0, 0, 0, 0));

      //creation of the frame used to open a file
      frame = new JFrame();
      fileChooser = new JFileChooser();

      //creates a slider with the specified orientation and the specified minimum, maximum, and initial values
      slider = new JSlider(JSlider.HORIZONTAL,0,50,0);

      JPanel menu = new JPanel();
      menu.add(open);
      menu.add(play);
      menu.add(pause);
      menu.add(stop);
      menu.add(segment);
      menu.add(about);
      add(menu, BorderLayout.NORTH);

      slider.setMajorTickSpacing(10); //This method sets the major tick spacing
      slider.setMinorTickSpacing(2); //This method sets the minor tick spacing
      slider.setPaintTicks(true); //Determines whether tick marks are painted on the slider
      slider.setPaintLabels(false); //Determines whether labels are painted on the slider
      slider.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); //Sets the border of this component
      menu_bar.add(slider); //Appends the slider to the end of the menu bar

      //actions which are made while pressing the open button
      open.addActionListener(new ActionListener()
       		{
       			public void actionPerformed(ActionEvent e)
       			{
       			 //modification of the icon
       			 Toolkit tk = Toolkit.getDefaultToolkit();
       				frame.setIconImage(new ImageIcon("icons/icon.gif").getImage());
       			
       				System.out.println("Open a file");
       				
       				//posting of a window "of opening"
       			 int choix = fileChooser.showOpenDialog(frame);
       			
       			 if(choix == fileChooser.APPROVE_OPTION)
       				{
       					file = fileChooser.getSelectedFile(); //recover the selected file
       					String address =  file.getPath();//recover the address of the file
       					loadMovie( address );
       					player.start();
       				}
       			}
       		});
      
      //actions which are made while pressing the play button
       	play.addActionListener(new ActionListener()
       			{
       				public void actionPerformed(ActionEvent e)
       				{
       				 player.start();
       				 //player.setMediaTime(new Time(0.0));
       				 while(play.isSelected())
       				 {
       			   Time tm = player.getMediaTime();
       			   double t = tm.getSeconds();
       			   if (t > 0.0)
       			   {
       				 player.setMediaTime(new Time(t - step));
       			   }
       				 }
       				 System.out.println("Playing movie");		
       				}
       			});
       	
       	//actions which are made while pressing the pause button
       	pause.addActionListener(new ActionListener()
       			{
       				public void actionPerformed(ActionEvent e)
       				{
       				 player.stop();
       				 player.deallocate();
       				 System.out.println("Pause");
       				}
       			});
       	
       	//actions which are made while pressing the stop button
       	stop.addActionListener(new ActionListener()
       			{
       				public void actionPerformed(ActionEvent e)
       				{
       				 player.stop();
       				 player.deallocate();
       				 System.out.println("Stop");
       				 player.setMediaTime(new Time(0)); //puts the video at the beginning
       					if (player.getTargetState() < Player.Started)
       						player.prefetch();
       				}
       			});
       	
       	//actions which are made while pressing the about button
       	about.addActionListener(new ActionListener()
       			{
       				public void actionPerformed(ActionEvent e)
       				{  
       				 System.out.println("About");
       				 //Brings up a dialog that displays a message using a default icon determined by the messageType parameter
       				 JOptionPane.showMessageDialog(null," Video Player 1.1\n Video Player Java using JMF\n\n version 1.1", "About Video Player",JOptionPane.INFORMATION_MESSAGE);
       				}
       			});
      

      }

      if ( videoPanel == null)
      { //creation of the panel of sight
      videoPanel = new JPanel();
      videoPanel.setLayout( new BorderLayout() );
      add( videoPanel, BorderLayout.CENTER);
      }
      else
      videoPanel.removeAll();

      //obtaining the component restoring the image in provenence of the player.
      Component vis = player.getVisualComponent();
      if ( vis != null )
      { // if it is valid then we put it in our sight
      videoPanel.add( vis, BorderLayout.CENTER);
      videoPanel.setVisible(true);
      //this.pack(); // resize the size according to the size of film
      }
      }

      else if ( controllerEvent instanceof EndOfMediaEvent )
      {
      if (player != null)
      { //stop the movie
      player.stop();
      player.deallocate(); /* Deallocating the Player releases any resources that would prevent another
      Player from being started. For example, if the Player uses a hardware device
      to present its media, deallocate frees that device so that other Players
      can use it. */
      }
      }
      }

    void slider_stateChanged(ActionEvent e)
    {
    if (follows_slider)
    {
    float tm = slider.getValue() * step;
    player.setMediaTime(new Time™);
    }
    }

    private void validateSlider()
    {
    Time tm = player.getMediaTime();
    slider.setValue((int)(tm.getSeconds() / step));
    }

}[/code]

L’applet

[code]package videoPlayer;

import javax.swing.JApplet;
import javax.swing.JFrame;

import videoPlayer.MediaPlayer;

public class MediaPlayerApplet extends JApplet {
//MediaPlayerApplet applet;

public void init() {

	JFrame f = new JFrame();
	String args = "open.avi";
	MediaPlayer m = new MediaPlayer(args);
	f.getContentPane().add(m);
	//applet.pack();
	f.setVisible(true);

}

}[/code]

Je copie ici ce que la console m’affiche :

[quote]java.io.IOException: File Not Found
java.io.IOException: File Not Found
Error creating player[/quote]

Il faut savoir que la vidéo est dans le meme répertoire que ce joli monde pour le besoin des tests j ai fait au plus simple.

Voilà si des ptits geeks passent par ici ca m’aiderait grandement.

Merci la zone.

Re bonjour moi :

J’ai corrigé l’url en en mettant une correcte et j’arrive à ca :

nouvelle url

et la console m’affiche :

Unable to handle format: MP42, 320x233, FrameRate=12.0, Length=223680 0 extra bytes Failed to realize: com.sun.media.PlaybackEngine@a981ca Error: Unable to realize com.sun.media.PlaybackEngine@a981ca

Si une âme en peine est de passage qu’elle n’hésite pas à m’aider j’en suis même au point d’accepter les trolls…

Je continue mon self thread …

j’ai réussi à faire marcher ce beau code mais ô joie le lecteur ne lit pas les flv.

Donc pour moi c’est un gros retour à la case départ.

[mode liloudallasmoultipass] " please help " [/mode liloudallasmoultipass]

Euh,

question stupide : quel est l’interet de lire des flv (donc du flash) via du java ?

A moins que tu ne sois sur une plateforme qui ne possede pas d’implémentation flash…

Si c’est le cas, cherche des classes qui implementent des briquettes de flash, une video flv étant avant tout un film flash (et non pas une video).

Je ne suis pas sur de t’avoir aidé, mais tu es si seul B)

[quote=“bdfck, post:5, topic: 44823”]Euh,

question stupide : quel est l’interet de lire des flv (donc du flash) via du java ?[/quote]

Concrètement aucun.
Scolairement beaucoup plus étant donné qu’on est chargé (mes acolytes et moi-même) de créer deux applets pour un site internet.

La première doit permettre l’upload de vidéo tout en les convertissant au format (flv).
La seconde permet donc de visionner ses vidéos au format flv.

Dans un second temps on permettra le download de ces vidéos sous les deux formats (celui original et le flv)…

Toute idée est bonne à prendre …

(totalement hors-sujet : ta signature me semble un peu grande, et je serais supris que tu prenne pas une balle dans le genou rapidement)

C’est obligé d’etre du FLV et du Java? Parceque t’as deja la solution toute faite avec Silverlight+encoder machin chose, 4gig de hosting et traffic illimité. Enfin je dis ca c’est juste pour faire ma pub,mais pour ce genre de solution a base de video, c’est quand meme bien sympa comme offre et dur a battre.

Oui c’est obligé d’être du flv et du java…
C’est un projet dans le cadre de ma formation (école d’ingé).
Mon groupe a hérité d’un projet d’une école d’art , je précise parceque nos interlocuteurs sont des gens qui ne connaissent pas grand chose à l’informatique.
Bref l’école nous impose de developper en java et d’optimiser la diffusion des vidéos en les encodant en .flv puis de les diffuser d’où les deux applets applets java…
Si vous avez quoique ce soit please tell me.

PS: pour le superbe troll sur ma signature , outre le fait que je trouve ca super constructif, si ca dérange vraiment je la change y a np.

Merci Glop et merci la Zone.

C’est pas un troll coco, moi je te préviens amicalement qu’ici ils sont un peu chatouilleux sur les tailles de signatures et que plusieurs personnes se sont fait remonté les bretelles pour ca. Maintenant tu fais ce que tu veux hein, mais si tu te rend pas compte qu’elle est un poil grosse, je peux rien faire de plus.

[quote=“Le_Duc, post:9, topic: 44823”]Oui c’est obligé d’être du flv et du java…
C’est un projet dans le cadre de ma formation (école d’ingé).
Mon groupe a hérité d’un projet d’une école d’art , je précise parceque nos interlocuteurs sont des gens qui ne connaissent pas grand chose à l’informatique.
Bref l’école nous impose de developper en java et d’optimiser la diffusion des vidéos en les encodant en .flv puis de les diffuser d’où les deux applets applets java…
Si vous avez quoique ce soit please tell me.[/quote]

J’adore le Java, mais je dois dire que dans ton cas, utilisé du Java à la place du Flash pour lire une video est totalement stupide.
Il faudrai peut-être que les professeurs de ton école revienne un peu dans le monde réel où les solutions les plus simples et les plus adaptés pour un problème donné sont toujours les meilleurs, il suffit de regarder les dixaines de site qui affichent des videos sur le net, il le font tous en flash.

Signature modifiée désolé si ca a dérangé niveau de la lecture.
mea culpa powa.

[quote=« Le_Duc, post:4, topic: 44823 »]Je continue mon self thread …

j’ai réussi à faire marcher ce beau code mais ô joie le lecteur ne lit pas les flv.

Donc pour moi c’est un gros retour à la case départ.

[mode liloudallasmoultipass] " please help " [/mode liloudallasmoultipass][/quote]

Bonjour,
j’espère que ce thread est encore vivant.
J’ai exactement le même problème, mais je n’arrive pas à la résoudre. Comment as-tu fait pour lire la vidéo (je précise que j’ai le même code source, ainsi que la même vidéo que toi)?
Merci de ta réponse :slight_smile: