J'essaie de créer un aperçu miniature à partir d'un fichier vidéo (mp4,3gp) à partir d'un formulaire input type='file'
. Beaucoup ont dit que cela ne pouvait se faire que côté serveur. Je trouve cela difficile à croire depuis que je suis récemment tombé sur ce Fiddle utilisant HTML5 Canvas et Javascript.
Le seul problème est que cela nécessite que la vidéo soit présente et que l'utilisateur clique sur lecture avant de cliquer sur un bouton pour capturer la miniature. Je me demande s'il existe un moyen d'obtenir les mêmes résultats sans que le joueur soit présent et que l'utilisateur clique sur le bouton. Par exemple: l'utilisateur clique sur le téléchargement de fichier et sélectionne le fichier vidéo, puis la miniature est générée. Toute aide/réflexion est la bienvenue!
Canvas.drawImage doit être basé sur du contenu html.
//and code
function capture(){
var canvas = document.getElementById('canvas');
var video = document.getElementById('video');
canvas.getContext('2d').drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
}
L'avantage de cette solution est que vous pouvez sélectionner la vignette de votre choix en fonction de l'heure de la vidéo.
J'en avais récemment besoin et j'ai fait pas mal de tests et de les réduire au strict minimum, voir https://codepen.io/aertmann/pen/mAVaPx
Il y a quelques limitations où cela fonctionne, mais le support du navigateur est assez bon actuellement: Chrome, Firefox, Safari, Opera, IE10, IE11, Android (Chrome), iOS Safari (10+).
video.preload = 'metadata';
video.src = url;
// Load video in Safari / IE11
video.muted = true;
video.playsInline = true;
video.play();