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

Multimédia Java Discussion :

[JMF] Récupération des frames d'une vidéo


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [JMF] Récupération des frames d'une vidéo
    je veux savoir comment je peux découper une vidéo en images avec la jmf.
    plus précisemment je veux générer les séquences d'images qui constituent une vidéo.
    Dernière modification par Invité ; 24/05/2007 à 20h58.

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,
    ça m'a pris trop de temps mais en fin ça marche très bien.
    voici le code qui permet d'en extraire toutes le images d'une vidéo.
    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
     /*
    Code écrit par Mehdiing
    Avant d'éxécuter le code vous devriez installer le package JMF.
    Ce code ne marche que pour les médias de format AVI.
     */
     
     
    import javax.media.*;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.FileOutputStream;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.control.FramePositioningControl;
    import javax.media.format.VideoFormat;
    import javax.media.util.BufferToImage;
     
     
     
     
    public class Video_Images implements  ControllerListener{
     
      Buffer buf = null;
      Image img = null;
      BufferToImage btoi = null;
      private Player player = null;
     
     
    //Constructeur
    public Video_Images(String a)
    {
    super();
        try
        {
        /*La création du lecteur et le chargement du fichier à lire.*/
        player = Manager.createPlayer( new MediaLocator(a) );
        /*L'ajout d'un écouteur sur le player pour pouvoir gérer les évenements
         de ce dernier*/
        player.addControllerListener( this ) ;
        /*Cette fonction permet au player d'acquérir toutes les informations et
         toutes les ressources qui lui sont nécessaires sur le média*/
        System.out.println("Acquésition des ressources et des informations média en cours.");
        System.out.println("Patientez S'il vous plait.");    
        player.realize();
        }
        catch (Exception e)
        {
        /*Traitement des erreurs qui peuvent survenir lors de la création du lecteur.*/
        System.out.println("Error creating player");
        return;
        }
    }
     
    /*On implimente la fonction controllerUpdate de la classe ControllerListener qui nous permet
       de gérer les évenemnts du player.*/
    public void controllerUpdate( ControllerEvent ce )
    {
      /*
       une fois les ressources et les informations nécessaires pour le média sont reconnus
       on passe au traitement.*/
    if ( ce instanceof RealizeCompleteEvent )
    {
        int NomImage = 1;
        int dest;
        FramePositioningControl fpc;
        FrameGrabbingControl fgc;
        Time duration = player.getDuration();
        int totalFrames = FramePositioningControl.FRAME_UNKNOWN;
        fpc = (FramePositioningControl) player.getControl("javax.media.control.FramePositioningControl");
        if (fpc == null)
        {
          System.out.println("Le média ne supporte pas les FramePositioningControl.");
        }
        else
        {
            /*
            On calcul le nombre d'images dans le média.
            */
          totalFrames = fpc.mapTimeToFrame(duration);
          System.out.println("Nombre total des images dans le média : " + totalFrames);
     
          /*
          boucle de parcours des images de le média.
           */
          while (NomImage <= totalFrames)
          {
            /*
             La fonction skip nous permet d'avancer dans les images par exemple si 
             le player pointe sur l'image 45 de le média et on fait dest = fpc.skip(10);
             le player pointera sur l'image 55.
             Pour la fonction seek on peut accéder directement à l'image qu'on désire
             par exemple quelque soit l'image sur laquelle pointe le player et on fait
             dest = fpc.seek(10) le player pointera sur l'image 10.
             */
            dest = fpc.skip(1);//avec dest = fpc.seek(NomImage); ça marche aussi.
            /*
            On capture l'image pointé par le player.     
             */
            fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
            /*
            On met l'image dans un buffer.
             */
            buf = fgc.grabFrame();
            /*
             On convertit l'image dans le buffer.
             */
            btoi = new BufferToImage( (VideoFormat) buf.getFormat());
            img = btoi.createImage(buf);
            /*
    Ici vous pouvez soit enregistrez l'image ou bien l'afficher dans un JPanel ...
    je vous laisse e choix.
    */
     
            System.out.println("Image " + NomImage + "extraite");
            NomImage = NomImage + 1;
          }
        }
      }
    }
     
    /*La fonction main.
     N'oubliez pas de changer le chemin de la video.
     */
    public static void main(String[] args)
    {
      new Video_Images("file:C:\\video.avi" );
    }
    }
    Dernière modification par Invité ; 07/04/2010 à 13h13.

  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
    Mercibeaucoup au nom de ceux qui pourront réutiliser ton travail par la suite (même si personellement, pour l'instant je n'en ais aucunement l'utilité)...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pour l'utilité, crois moi c'est vraiment très utile.
    car ça simplifie beaucoup la tâche de traitement de la vidéo.
    avec ça en peut aider à la détection de mouvement, on applique des filtres aux vidéos : détection de contours, transformation niveaux de gris...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Par défaut
    hey dis donc !
    Moi c'est exactement l'inverse que je veux faire ?
    vous pourriez m'aider ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    bon tu peux trouver le code sur le site de sun.
    ce code te permet de générer une vidéo .mov(quicktime movie)
    voilà le lien
    http://java.sun.com/products/java-me...esToMovie.html
    il existe un autre dans le même site celui ci te permet de générer un fchier .avi
    http://forum.java.sun.com/thread.jsp...sageID=2394574

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VB6: Récupération des meta d'une page HTML avec HTMLDocument
    Par Matounet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/09/2011, 07h55
  2. calculer la moyenne des frames d'une vidéo
    Par jad777 dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/10/2008, 11h32
  3. Extraction des frames d'une vidéo
    Par jacques_henry dans le forum C++
    Réponses: 6
    Dernier message: 05/01/2006, 18h46
  4. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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