Capturer des images à partir de vidéos en HTML5 et JavaScript

Je veux capturer une image à partir de la vidéo toutes les 5 secondes.

C'est mon code JavaScript:

video.addEventListener('loadeddata', function() {
    var duration = video.duration;
    var i = 0;

    var interval = setInterval(function() {
        video.currentTime = i;
        generateThumbnail(i);
        i = i+5;
        if (i > duration) clearInterval(interval);
    }, 300);
});

function generateThumbnail(i) {     
    //generate thumbnail URL data
    var context = thecanvas.getContext('2d');
    context.drawImage(video, 0, 0, 220, 150);
    var dataURL = thecanvas.toDataURL();

    //create img
    var img = document.createElement('img');
    img.setAttribute('src', dataURL);

    //append img in container div
    document.getElementById('thumbnailContainer').appendChild(img);
}

Le problème que j'ai est la 1ère deux images générées sont les mêmes et la durée de 5 secondes, l'image n'est pas généré. J'ai trouvé que la vignette est généré avant l'image vidéo de l'heure est affichée dans < video> tag.

Par exemple, lorsque video.currentTime = 5, image de image de 0 est générée. Ensuite, l'image vidéo de saut à l'heure 5s. Alors, quand video.currentTime = 10, image de image 5s est généré.

  • Qu'est-ce que theCanvas sur votre generateThumbnail fonction? Pouvez vous s'il vous plaît fournir les balises html, pour cette question, pour être le plus utile? Je suis en train de faire la même chose, mais je ne suis pas sûr de savoir comment theCanvas doivent être déclarés sur la page. Merci!
  • Salut Lin, avez-vous encore le code source de cette question, on vous a demandé? pouvez-vous nous fournir un lien?
InformationsquelleAutor Lin | 2013-10-04