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

JavaScript Discussion :

Extraire une image à partir d'une vidéo (Projekktor)


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Extraire une image à partir d'une vidéo (Projekktor)
    Bonjour,

    Mon souci est le suivant:

    Comment extraire une image à partir d'une vidéo à un temps bien précis.C'est à dire quand l'utilisateur clique sur une position sur le timeline de la vidéo, je récupère la position puis je stocke l'image correspondante dans un dossier dans mon projet.

    NB: Le player que j'utilise est Projekktor

    J'ai deja fait le code qui me permet de récupérer la position, mais comment obtenir l'image?

    voila l'ensemble de fonctions(getters) de ce player http://www.projekktor.com/docs/api#getters

    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
    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Projekktor - simply mighty video</title>
        <style type="text/css">
        body { background-color: #fdfdfd; padding: 0 20px; color:#000; font: 13px/18px monospace; width: 800px;}
        a { color: #360; }
        h3 { padding-top: 20px; }
        </style>
     
        <!-- Load player theme -->
        <link rel="stylesheet" href="themes/maccaco/projekktor.style.css" type="text/css" media="screen" />
     
        <!-- Load jquery -->
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
        <!-- load projekktor -->
        <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
     
    </head>
    <body>
    <video class="projekktor" poster="http://www.projekktor.com/wp-content/manual/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
        <source src="http://www.projekktor.com/wp-content/manual/intro.mp4" type="video/mp4" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.webm" type="video/webm" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.ogv" type="video/ogg" />
    </video>
    <script type="text/javascript">
    /*
    This script is just an example and included to build up the "demo status panel".
    For daily practice installing the player to your site is MUCH simpler and stright forward.
    Please take a look at http://www.projekktor.com/docs/quickinstall
    */
    jQuery(document).ready(function($) {
     
        // two video items we can dynamically inject for testing purposes:
        var videoOne = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
        var videoTwo = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
     
        /*********************************************************************
        Some player event listeners to set general status information:
        *********************************************************************/
     
           var seekListener=function(Obj) {   
       $('#mouseclick').html(myPlayer.getPosition())
       //$('#mouseclick').html(myPlayer.getMediaType())
     
       //alert(projekktor('video').getPosition())
        //$('#time').text()
        }
     
     
        /*********************************************************************
          Configure and instantiate the player and
          apply an "onReady" callback function
        *********************************************************************/   
        var myPlayer = projekktor('#player_a', {
        debug: false,
        playerFlashMP4: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',
        playerFlashMP3: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',   
        plugin_display: {
               logoImage: "yourlogo.png"
        }
        }, function(player) {
     
        // add listeners
        player.addListener('seek', seekListener);
     
     
        });   
    });
    </script>
    <div id="panel">
        <ul class="info">
     
        <li>Mouse click <span id="mouseclick" ></span></li>
     
     
        </ul>
        <div style="clear:both;"></div>
    </div>
    </body>
    </html>

  2. #2
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 717
    Points : 1 605
    Points
    1 605
    Par défaut
    jour

    il faut passer par un canevas afin de récupéré l'image puis on l'enregistre soit en base 64 ou en ficher par conversion en blob
    Plus vite encore plus vite toujours plus vite.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Meerci beaucoup pour votre réponse.en fait j'ai pas bien saisie ce que vous voulez dire .Pouvez-vous m'expliquez et me donner un exemple!

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    J’ajoute à la réponse de melka one : la méthode de canevas drawImage permet de récupérer une « capture » d’un élément <video>. Il suffit d’avoir une référence sur l’élément en question, le reste est pris en charge par le navigateur.

    Pour convertir en blob, il faut utiliser la méthode toBlob du canevas.

    Voici comment faire en détails :
    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
    // 1. Obtenir une référence sur l’élément <video>
    var player = document.querySelector('#player_a');
     
    // 2. Créer un canevas aux dimensions de la vidéo
    var canvas = document.createElement('canvas');
    canvas.width = player.width;
    canvas.height = player.height;
     
    // 3. Obtenir le contexte de dessin du canevas
    var cx = canvas.getContext('2d');
     
    // 4. Capturer l’image actuelle de la vidéo
    cx.drawImage(player, 0, 0, canvas.width, canvas.height);
     
    // 5. Convertir l’image capturée en fichier, et créer un lien vers ce fichier
    canvas.toBlob(function (blob) {
      var a = document.createElement('a');
      a.href = URL.createObjectURL(blob);
      a.target = '_blank';
      a.textContent = 'Voir l’image capturée';
      document.body.appendChild(a);
    });
    C’est basique mais ça te donne une idée de comment faire. Reste à trouver comment :
    capturer un instant spécifique de la vidéo
    contourner les problèmes de sécurité avec les vidéos provenant d’un autre domaine (voir https://developer.mozilla.org/fr/doc..._CORS_activees)
    envoyer les captures vers le serveur

    Reviens nous dire comment tu progresses
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'ai bien essayé ce code mais rien n'est changé :/
    j'ai associé votre code à l'évenement "seek" (il se déclenche quand on clique su une position dans le timeline de la 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
    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Projekktor - simply mighty video</title>
        <style type="text/css">
        body { background-color: #fdfdfd; padding: 0 20px; color:#000; font: 13px/18px monospace; width: 800px;}
        a { color: #360; }
        h3 { padding-top: 20px; }
        </style>
     
        <!-- Load player theme -->
        <link rel="stylesheet" href="themes/maccaco/projekktor.style.css" type="text/css" media="screen" />
     
        <!-- Load jquery -->
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
        <!-- load projekktor -->
        <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
     
    </head>
    <body>
    <video class="projekktor" poster="http://www.projekktor.com/wp-content/manual/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
        <source src="http://www.projekktor.com/wp-content/manual/intro.mp4" type="video/mp4" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.webm" type="video/webm" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.ogv" type="video/ogg" />
    </video>
    <script type="text/javascript">
    /*
    This script is just an example and included to build up the "demo status panel".
    For daily practice installing the player to your site is MUCH simpler and stright forward.
    Please take a look at http://www.projekktor.com/docs/quickinstall
    */
    jQuery(document).ready(function($) {
     
        // two video items we can dynamically inject for testing purposes:
        var videoOne = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
        var videoTwo = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
     
        /*********************************************************************
        Some player event listeners to set general status information:
        *********************************************************************/
     
           var seekListener=function(Obj) {    
       $('#mouseclick').html(myPlayer.getPosition())
    //******************Votre code******************
        // 1. Obtenir une référence sur l’élément <video>
    var player = document.querySelector('player_a');
     
    // 2. Créer un canevas aux dimensions de la vidéo
    var canvas = document.createElement('canvas');
    canvas.width = player.width;
    canvas.height = player.height;
     
    // 3. Obtenir le contexte de dessin du canevas
    var cx = canvas.getContext('2d');
     
    // 4. Capturer l’image actuelle de la vidéo
    cx.drawImage(player, 0, 0, canvas.width, canvas.height);
     
    // 5. Convertir l’image capturée en fichier, et créer un lien vers ce fichier
    canvas.toBlob(function (blob) {
      var a = document.createElement('a');
      a.href = URL.createObjectURL(blob);
      a.target = '_blank';
      a.textContent = 'Voir l’image capturée';
      document.body.appendChild(a);
    });
        }
     
     
        /*********************************************************************
          Configure and instantiate the player and
          apply an "onReady" callback function
        *********************************************************************/    
        var myPlayer = projekktor('#player_a', {
        debug: false,
        playerFlashMP4: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',
        playerFlashMP3: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',    
        plugin_display: {
               logoImage: "yourlogo.png"
        }, controls: true,
        addplugins: ['controlbar']
        }, function(player) {
     
        // add listeners
        player.addListener('seek', seekListener);
        //$('#player_a').addEventListener('mouseup', mouseUpListener);
        // player dom id
        $('#playerid').html(player.getId());
     
     
        });    
    });
    </script>
    <div id="panel">
        <ul class="info">
     
        <li>Mouse click <span id="mouseclick" ></span></li>
     
        </ul>
     
     
        <div style="clear:both;"></div>
    </div>
     
     
    </body>
    </html>

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    j'ai trouvé une autre solution similaire et ça marche, mais le probleme c'est que dès que je rajoute mon code de projekktor ça marche plus je ne sais pas pourquoi !!
    j'ai pris le code de ce lien : http://isithackday.com/videograbber/
    voilà le code:
    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
    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Projekktor - simply mighty video</title>
        <style type="text/css">
        body { background-color: #fdfdfd; padding: 0 20px; color:#000; font: 13px/18px monospace; width: 800px;}
        a { color: #360; }
        h3 { padding-top: 20px; }
        </style>
     
        <!-- Load player theme -->
        <link rel="stylesheet" href="themes/maccaco/projekktor.style.css" type="text/css" media="screen" />
     
        <!-- Load jquery -->
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
        <!-- load projekktor -->
        <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
     
    </head>
    <body>
    <div id="video">
    <video class="projekktor" poster="http://www.projekktor.com/wp-content/manual/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
        <source src="http://www.projekktor.com/wp-content/manual/intro.mp4" type="video/mp4" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.webm" type="video/webm" />
        <source src="http://www.projekktor.com/wp-content/manual/intro.ogv" type="video/ogg" />
    </video>
    </div>
    <div id="canvas">
      <h2>Preview (click to store images below):</h2>
      <canvas></canvas>
    </div>
    <div id="save">
      <h2>Your saved images:</h2>
      <ul></ul>
    </div>
    <script type="text/javascript">
    /*
    This script is just an example and included to build up the "demo status panel".
    For daily practice installing the player to your site is MUCH simpler and stright forward.
    Please take a look at http://www.projekktor.com/docs/quickinstall
    */
    jQuery(document).ready(function($) {
     
        // two video items we can dynamically inject for testing purposes:
        var videoOne = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
        var videoTwo = { 0:{src: 'http://www.youtube.com/watch?v=emvpc0N0WR4', type: 'video/youtube'} }
     
        /*********************************************************************
        Some player event listeners to set general status information:
        *********************************************************************/
     
           var seekListener=function(Obj) {    
       $('#mouseclick').html(myPlayer.getPosition())
     
     
        }
     
     
        /*********************************************************************
          Configure and instantiate the player and
          apply an "onReady" callback function
        *********************************************************************/    
        var myPlayer = projekktor('#player_a', {
        debug: false,
        playerFlashMP4: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',
        playerFlashMP3: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',    
        plugin_display: {
               logoImage: "yourlogo.png"
        }, controls: true,
        addplugins: ['controlbar']
        }, function(player) {
     
        // add listeners
        player.addListener('seek', seekListener);
     
     
     
        });    
     var v = document.querySelector('video'),
          n = document.querySelector('source').src.replace(/.*\/|\..*$/g,''),
          c = document.querySelector('canvas'),
          save = document.querySelector('#save ul'),
          ctx = c.getContext('2d');
     
      v.addEventListener('loadedmetadata',function(ev){
     
        var ratio = v.videoWidth/v.videoHeight,
            w = 400,
            h = parseInt(w / ratio, 10),
            time = 0,
            img = null,
            li = null;
     
        c.width = w;
        c.height = h + 40;
     
        v.addEventListener('timeupdate',function(ev){
          if(v.paused){
            ctx.fillStyle = 'rgb(0, 0, 0)';
            ctx.fillRect(0, 0, w, h);
            ctx.drawImage(v, 0, 40, w, h);
            ctx.font = '20px Calibri';
            ctx.fillStyle = 'lime';
            ctx.fillText(n, 5, 20);
            time = format(v.currentTime);
            ctx.fillStyle = 'white';
            ctx.fillText(time, 395 - ctx.measureText(time).width, 20);
          }
        },false);
     
        c.addEventListener('click',function(ev){
          li = document.createElement('li');
          img = document.createElement('img');
          li.appendChild(img);
          save.appendChild(li);
          img.src = ctx.canvas.toDataURL('image/png');
        },false);
     
      },false);
     
      function format(time){
        var hours = parseInt((time / 60 / 60) % 60, 10),
            mins = parseInt((time / 60) % 60, 10),
            secs = parseInt(time, 10) % 60,
            hourss = (hours < 10 ? '0' : '') + parseInt(hours, 10) + ':',
            minss = (mins < 10 ? '0' : '') + parseInt(mins, 10) + ':',
            secss  = (secs < 10 ? '0' : '') +(secs % 60),
            timestring = ( hourss !== '00:' ? hourss : '' ) + minss + secss;
        return timestring;
      };
    });
    </script>
    <div id="panel">
        <ul class="info">
     
        <!-- <li>Mouse click <span id="mouseclick" ></span></li> -->
     
        </ul>
     
     
        <div style="clear:both;"></div>
    </div>
     
     
    </body>
    </html>

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    J’ai copié ton code en local, et dans la console F12 j’ai eu ce message :
    TypeError: document.querySelector(...) is null
    Le numéro de ligne correspond à cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n = document.querySelector('source').src.replace(/.*\/|\..*$/g,''),
    Quand on utilise l’inspecteur, on s’aperçoit que les éléments <source> ont été supprimés, probablement par Projekktor. Conclusion : Projekktor et le script que tu as trouvé ne sont pas compatibles.


    Mon script échoue à peu près pour la même raison. Mais d’abord, il faut corriger une erreur que tu as faite à la recopie : c’est document.querySelector('#player_a') avec un #. Ou alors, utilise document.getElementById.

    Les erreurs qui se produisent au sein de seekListener ne sont pas faciles à voir car elles sont interceptées par Projekktor. J’ai placé un try/catch autour de mon code pour inscrire les erreurs dans la console, et voici ce j’ai vu :
    Argument 1 of CanvasRenderingContext2D.drawImage could not be converted to any of: HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap.
    C’est logique quand on sait que Projekktor a modifié la structure de la page : #player_a n’est plus un élément <video>, c’est une <div>, et le canevas ne sait pas capturer ce type d’élément.

    Projekktor crée un nouvel élément <video> lorsque l’utilisateur lance la lecture. Il faut trouver ce nouvel élément en faisant document.querySelector('#player_a video'). Il faut également adapter mon script pour mettre player.videoWidth à la place de player.width, et idem pour height.

    Une fois ce problème réglé, une nouvelle erreur apparaît :
    The operation is insecure.
    C’est le problème dont j’ai parlé dans mon post précédent avec les vidéos provenant d’un autre domaine. Le canevas est « teinté » pour empêcher d’éventuels vols d’informations, et ce « teintage » a pour effet d’empêcher l’utilisation des méthodes de conversion telles que toDataURL et toBlob.

    Ce problème m’intéresse et je vais essayer de trouver une solution. En attendant, utilise les copies locales des fichiers de médias (fournies par Projekktor) pour faire tes tests.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <video class="projekktor" poster="media/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
      <source src="media/intro.mp4" type="video/mp4" />
      <source src="media/intro.webm" type="video/webm" />
      <source src="media/intro.ogv" type="video/ogg" />
    </video>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide
    J'ai fait tous les changements que vous avez dit mais j'arrive pas à voir le lien vers l'image (Voir l’image capturée), j'ai conclut que la fonction "Blob" ne s’exécute pas! je ne sais pas pour quoi!
    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
    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Projekktor - simply mighty video</title>
        <style type="text/css">
        body { background-color: #fdfdfd; padding: 0 20px; color:#000; font: 13px/18px monospace; width: 800px;}
        a { color: #360; }
        h3 { padding-top: 20px; }
        </style>
     
        <!-- Load player theme -->
        <link rel="stylesheet" href="themes/maccaco/projekktor.style.css" type="text/css" media="screen" />
     
        <!-- Load jquery -->
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
        <!-- load projekktor -->
        <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
     
    </head>
    <body>
    <div id="video">
    <video class="projekktor" poster="http://www.projekktor.com/wp-content/manual/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
        <source src="media/intro.mp4" type="video/mp4" />
    </video>
    </div>
    <script type="text/javascript">
    /*
    This script is just an example and included to build up the "demo status panel".
    For daily practice installing the player to your site is MUCH simpler and stright forward.
    Please take a look at http://www.projekktor.com/docs/quickinstall
    */
    jQuery(document).ready(function($) {
     
     
        /*********************************************************************
        Some player event listeners to set general status information:
        *********************************************************************/
     
           var seekListener=function(Obj) {    
       $('#mouseclick').html(myPlayer.getPosition());
     
        // 1. Obtenir une référence sur l’élément <video>
    var player = document.querySelector('#player_a video');
     
    // 2. Créer un canevas aux dimensions de la vidéo
    var canvas = document.createElement('canvas');
    canvas.width = player.videowidth;
    canvas.height = player.videoheight;
     
    // 3. Obtenir le contexte de dessin du canevas
    var cx = canvas.getContext('2d');
     
    // 4. Capturer l’image actuelle de la vidéo
    cx.drawImage(player, 0, 0, canvas.width, canvas.height);
     
    // 5. Convertir l’image capturée en fichier, et créer un lien vers ce fichier
     
    canvas.toBlob(function (blob) {
      var a = document.createElement('a');
      a.href = URL.createObjectURL(blob);
      a.target = '_blank';
      a.textContent = 'Voir l’image capturée';
      document.getElementById('mouseclick').appendChild(a);
    });
     
        }
     
     
        /*********************************************************************
          Configure and instantiate the player and
          apply an "onReady" callback function
        *********************************************************************/    
        var myPlayer = projekktor('#player_a', {
        debug: false,
        playerFlashMP4: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',
        playerFlashMP3: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',    
        plugin_display: {
               logoImage: "yourlogo.png"
        }, controls: true,
        addplugins: ['controlbar']
        }, function(player) {
     
        // add listeners
        player.addListener('seek', seekListener);
     
     
     
        });    
    });
    </script>
    <div id="panel">
        <ul class="info">
     
        <li>Mouse click <span id="mouseclick" ></span></li>
     
        </ul>
     
     
        <div style="clear:both;"></div>
    </div>
     
     
    </body>
    </html>
    voilà le code:

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    canvas.width = player.videoWidth;
    canvas.height = player.videoHeight;
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Même si .Je n'arrive toujours pas à voir le lien vers l'image!
    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
    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Projekktor - simply mighty video</title>
        <style type="text/css">
        body { background-color: #fdfdfd; padding: 0 20px; color:#000; font: 13px/18px monospace; width: 800px;}
        a { color: #360; }
        h3 { padding-top: 20px; }
        </style>
     
        <!-- Load player theme -->
        <link rel="stylesheet" href="themes/maccaco/projekktor.style.css" type="text/css" media="screen" />
     
        <!-- Load jquery -->
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
        <!-- load projekktor -->
        <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
     
    </head>
    <body>
    <div id="video">
    <video class="projekktor" poster="http://www.projekktor.com/wp-content/manual/intro.png" title="This is Projekktor" width="640" height="385" controls id="player_a">
        <source src="media/intro.mp4" type="video/mp4" />
       </video>
    </div>
     
    <script type="text/javascript">
    /*
    This script is just an example and included to build up the "demo status panel".
    For daily practice installing the player to your site is MUCH simpler and stright forward.
    Please take a look at http://www.projekktor.com/docs/quickinstall
    */
    jQuery(document).ready(function($) {
     
     
     
        /*********************************************************************
        Some player event listeners to set general status information:
        *********************************************************************/
     
           var seekListener=function(Obj) {    
       $('#mouseclick').html(myPlayer.getPosition());
       //$('#mouseclick').html(myPlayer.getItem(current))
       //$('#mouseclick').html(myPlayer.getMediaType())
    //alert(myPlayer.getItemMedia())
       //alert(projekktor('video').getPosition())
        //$('#time').text()
        // 1. Obtenir une référence sur l’élément <video>
    var player = document.querySelector('#player_a video');
     
    // 2. Créer un canevas aux dimensions de la vidéo
    var canvas = document.createElement('canvas');
    canvas.width = player.videoWidth;
    canvas.height = player.videoHeight;
     
    // 3. Obtenir le contexte de dessin du canevas
    var cx = canvas.getContext('2d');
     
    // 4. Capturer l’image actuelle de la vidéo
    cx.drawImage(player, 0, 0, canvas.width, canvas.height);
     
    // 5. Convertir l’image capturée en fichier, et créer un lien vers ce fichier
     
    canvas.toBlob(function (blob) {
      var a = document.createElement('a');
      a.href = URL.createObjectURL(blob);
      a.target = '_blank';
      a.textContent = 'Voir l’image capturée';
      document.getElementById('mouseclick').appendChild(a);
    });
     
        }
     
     
        /*********************************************************************
          Configure and instantiate the player and
          apply an "onReady" callback function
        *********************************************************************/    
        var myPlayer = projekktor('#player_a', {
        debug: false,
        playerFlashMP4: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',
        playerFlashMP3: 'http://www.projekktor.com/wp-content/manual/jarisplayer.swf',    
        plugin_display: {
               logoImage: "yourlogo.png"
        }, controls: true,
        addplugins: ['controlbar']
        }, function(player) {
     
        // add listeners
        player.addListener('seek', seekListener);
     
     
     
        });    
     
    });
    </script>
    <div id="panel">
        <ul class="info">
     
        <li>Mouse click <span id="mouseclick" ></span></li>
     
        </ul>
     
     
        <div style="clear:both;"></div>
    </div>
     
     
    </body>
    </html>

  11. #11
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Chez moi ton code marche, copié-collé tel quel. Avec le protocole file: ou avec un serveur local.

    Ajoute un <meta charset="utf-8"> pour éviter les problèmes d’encodage.

    Tu testes sous quel(s) navigateur(s) ? Note : IE ne gère pas les blobs de la même façon. La méthode s’appelle msToBlob et elle est synchrone, c’est-à-dire qu’elle renvoie directement un résultat au lieu de prendre en paramètre une fonction de rappel.
    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
        var blobCallback = function (blob) {
          try {
            $(document.createElement('a'))
              .attr({
                href: URL.createObjectURL(blob),
                target: '_blank'
              })
              .text('Voir l’image capturée')
              .appendTo('#mouseclick');
          } catch (e) {
            console.error('Erreur dans blobCallback', e);
          }
        };
     
        var seekListener = function (Obj) {
          console.log(Obj);
          try {
            $('#mouseclick').html(myPlayer.getPosition());
            var player = document.querySelector('#player_a video');
     
            var canvas = document.createElement('canvas');
            canvas.width = player.videoWidth;
            canvas.height = player.videoHeight;
     
            canvas.getContext('2d')
              .drawImage(player, 0, 0, canvas.width, canvas.height);
     
            // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#Browser_compatibility
            if ('toBlob' in canvas) { // Chrome, Firefox
              canvas.toBlob(blobCallback);
            } else if ('msToBlob' in canvas) { // IE
              blobCallback(canvas.msToBlob());
            }
          } catch (e) {
            console.error('Erreur dans seekListener', e);
          }
        };
    Opera et Safari ne gèrent pas la conversion en blob. Il faudra sans doute envisager d’utiliser toDataURL.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'utilise Google Chrome, mon serveur local est IIS (je travaille avec ASP.NET Mvc C#),même si j'ai fais les modifications j'obtiens toujours ça:
    Nom : Capture.PNG
Affichages : 1592
Taille : 116,7 Ko

  13. #13
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je ne sais pas où tu bloques, mais je vais te donner mon code. Moi je bloque sur des problèmes cross-origin avec Projekktor, du coup je l’ai désactivé provisoirement pour voir si j’arrive à faire marcher CORS de base. Et a priori j’y arrive sous Firefox et Chrome, mais pas sous IE11 – mais pour IE, apparemment c’est normal et on peut trouver une solution de contournement, voir http://stackoverflow.com/a/19734516.

    J’ai déplacé le code JS dans un fichier externe.
    Code html : 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
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>Projekktor, canvas, CORS</title>
      <style type="text/css">
      body { background-color: #fdfdfd;
             padding: 0 20px;
             color:#000;
             font: 13px/18px monospace;
             width: 800px;
           }
      a { color: #360; }
      h3 { padding-top: 20px; }
      </style>
     
      <!-- Load player theme -->
      <link rel="stylesheet" type="text/css" media="screen"
            href="themes/maccaco/projekktor.style.css">
     
      <!-- Load jquery -->
      <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
     
      <!-- load projekktor -->
      <script type="text/javascript" src="projekktor-1.3.09.min.js"></script>
    </head>
    <body>
     
    <video id="player_a" class="projekktor" poster="media/intro.png"
           width="640" height="385" controls crossorigin="anonymous">
      <!-- cors-test est un alias de localhost
        Le répertoire media/ doit contenir un .htaccess pour que les vidéos
        soient envoyées avec un en-tête Access-Control-Allow-Origin
      -->
      <source src="http://cors-test/kaoutartahir/media/intro.mp4" type="video/mp4">
      <source src="http://cors-test/kaoutartahir/media/intro.webm" type="video/webm">
      <source src="http://cors-test/kaoutartahir/media/intro.ogv" type="video/ogg">
    </video>
     
    <script type="text/javascript" src="init.js"></script>
     
    <div id="panel">
        <ul class="info">
          <li>Mouse click <span id="mouseclick"></span></li>
        </ul>
        <div style="clear:both;"></div>
    </div>
     
    </body>
    </html>
    Note l’attribut crossorigin="anonymous" que j’ai rajouté à la balise <video>, il est nécessaire pour activer le mécanisme CORS qui nous donne le droit d’appeler toDataURL.

    Voici le fichier .htaccess qui ajoute les en-têtes CORS aux fichiers vidéos. J’ai fait mes tests avec Wampserver 3, je ne connais pas du tout IIS donc je ne peux pas t’aider, mais tu devrais trouver de la doc sur ce sujet facilement. Concrètement, tu dois faire en sorte que les fichiers mp4, webm et ogv soient envoyés avec l’en-tête Access-Control-Allow-Origin: *
    Code htaccess : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        <FilesMatch "\.(mp4|webm|ogv)$">
          SetEnvIf Origin ":" IS_CORS
          Header set Access-Control-Allow-Origin "*" env=IS_CORS
        </FilesMatch>
      </IfModule>
    </IfModule>

    Dans le script, j’ai retiré des instructions superflues qui servaient essentiellement à illustrer le fonctionnement de Projekktor.
    Code JS : 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
    'use strict';
     
    jQuery(document).ready(function($) {
     
      var canvas = document.createElement('canvas');
     
      var captureFrame = function captureFrame(video) {
        canvas.width = video.videoWidth;
        canvas.height = video.videoHeight;
     
        canvas.getContext('2d').drawImage(video, 0, 0);
     
        $(document.createElement('a'))
          .attr({
            href: canvas.toDataURL(),
            target: '_blank'
          })
          .text('Voir l’image capturée')
          .appendTo('#mouseclick');
      };
     
      var seekListener = function (state) {
        if (state !== 'SEEKED') return;
     
        try {
          $('#mouseclick').html(myPlayer.getPosition() + ' ');
          captureFrame(document.querySelector('#player_a video'));
        } catch (e) {
          console.error('Erreur dans seekListener', e);
        }
      };
     
      var startListener = function startListener(player) {
        player.getMediaContainer().find('video')
          .attr('crossOrigin', 'anonymous');
      };
     
      // désactive Projekktor provisoirement
      /*
      var myPlayer = projekktor('#player_a', {
        controls: true,
        addplugins: ['controlbar']
      }, function (player) {
        player.addListener('start', startListener);
        player.addListener('seek', seekListener);
      });
      */
     
      // onclick provisoire à la place de Projekktor
      $('#player_a').click(function () {
        captureFrame(this);
      });
     
    });

    Dans l’état, j’arrive à faire marcher les captures partout (si on met de côté le cas IE) sans Projekktor ; le problème avec Projekktor, c’est qu’il remplace la balise <video> et que, d’une certaine manière, ça fait « sauter » le mécanisme CORS, et je n’ai plus le droit de récupérer l’image. Je continue à chercher une solution à ce problème.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    A ce niveau là, je suis vraiment perdue

  15. #15
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Ne te laisse pas décourager J’ai testé mon code avant de le poster, je t’assure qu’il marche avec Wamp. Tout ce que tu as à faire, c’est de trouver comment envoyer les bons en-têtes HTTP avec IIS.
    J’ai trouvé ça, c’est pas subtil, mais pour des tests en local ça fera l’affaire : http://enable-cors.org/server_iis7.html
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <system.webServer>
       <httpProtocol>
         <customHeaders>
           <add name="Access-Control-Allow-Origin" value="*" />
         </customHeaders>
       </httpProtocol>
     </system.webServer>
    </configuration>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  16. #16
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci d'être toujours à l'écoute
    Mais encore sans résultat!

  17. #17
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Tu pourrais peut-être donner des détails ? Ce que tu as essayé, ce qui a marché, ce qui n’a pas marché, les messages d’erreur…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  18. #18
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Ree, je suis vraiment vraiment désolée pour ce retard
    Et la bonne nouvelle c que le problème est résolu, c’était un problème de navigateur Chrome mais avec FireFox version 22 ca marche à merveille.
    Merci infiniment pour ton aide qui était vraiment utile et pertinente

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    J'ai un autre souci, je veux stocker l'image capturer dans un dossier de mon projet, j'ai cherché comment mais en vain, je ne sais pas comment la rendre un vrai image avec un nom et extension...

  20. #20
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Les navigateurs ne te permettront pas d’enregistrer automatiquement un fichier sur le disque dur. En revanche, tu peux ajouter un attribut download="fichier.png" au <a> pour faire en sorte qu’au clic sur le lien, une fenêtre apparaiise pour proposer à l’utilisateur d’enregistrer la capture avec le nom "fichier.png" pré-rempli.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. Chargement d'une image à partir d'une vidéo
    Par DAUDET78 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 20/04/2012, 19h41
  2. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  3. Réponses: 7
    Dernier message: 07/07/2008, 11h18

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