html5: l'affichage de la vidéo à l'intérieur de la toile
est-il possible d'afficher un html5-vidéo dans le cadre de la toile?
fondamentalement de la même manière que vous dessinez une Image dans le canevas.
context.drawVideo(vid, 0, 0);
merci!
Vous devez vous connecter pour publier un commentaire.
Je suppose que le code ci-dessus est auto-Explicatif, Si pas de déposer un commentaire ci-dessous, je vais essayer d'expliquer ci-dessus, en quelques lignes de code
Modifier :
voici une ligne d'exemple, juste pour vous 🙂
Démo
JS:
HTML:
requestAnimationFrame
À l'aide de toile pour afficher des Vidéos
L'affichage d'une vidéo est à peu près le même que l'affichage d'une image. Les différences mineures sont à faire avec onload événements et le fait que vous avez besoin de rendre la vidéo à chaque image ou vous ne verrez qu'une seule image et non pas de l'animation des cadres.
La démo ci-dessous a quelques différences mineures pour l'exemple. Une fonction de mise en sourdine (sous la vidéo cliquez sur couper le son/son sur pour basculer le son) et certains vérification des erreurs pour attraper IE9+ et Edge s'ils n'ont pas les bons pilotes.
En gardant les réponses actuelles.
Les réponses précédentes par user372551 est pas à jour (décembre 2010) et a une faille dans la technique de rendu utilisé. Il utilise le
setTimeout
et un taux de 33.333..ms qui setTimeout va arrondir à 33ms ce sera la cause de la sautement toutes les deux secondes et peut descendre beaucoup plus si le taux d'image vidéo est plus que de 30. À l'aide desetTimeout
va également introduire la vidéo de cisaillement créé parce que setTimeout ne peuvent pas être synchronisés avec le matériel d'affichage.Il n'existe actuellement aucune méthode fiable permettant de déterminer une des vidéos de taux de trame, sauf si vous connaissez le taux d'image vidéo à l'avance, vous devez l'afficher au maximum d'affichage taux de rafraîchissement possible sur les navigateurs. 60fps
La première réponse a été pour le moment (il y a 6 ans) la meilleure solution en tant que
requestAnimationFrame
n'a pas été largement pris en charge (le cas échéant), maisrequestAnimationFrame
est maintenant la norme dans les Principaux navigateurs et doit être utilisé au lieu de setTimeout pour réduire ou supprimer la perte de trames, et afin d'éviter tout cisaillement.L'exemple de démonstration.
Charge une vidéo et à boucle. La vidéo ne sera pas jouer jusqu'à ce que vous cliquez sur elle. Cliquez de nouveau pour faire une pause. Il est muet/son sur le bouton situé sous la vidéo. La vidéo est désactivé par défaut.
JS:
CSS:
HTML:
Toile extras
L'aide de la toile pour rendre la vidéo vous donne des options supplémentaires en ce qui concerne l'affichage et le mélange dans le fx. L'image suivante montre une partie de la FX, vous pouvez obtenir de l'aide de la toile. À l'aide de l'API 2D donne une vaste gamme de possibilités créatives.
Image relatives à la réponse Fondu toile la vidéo à partir de niveaux de gris de la couleur
Voir le titre de la vidéo de démo ci-dessus pour l'attribution d'un contenu ci-dessus inmage.
video.autoPlay
est tout le bas-caps (ne pas suivre le camelcase typique pour une raison quelconque), par exemple:video.autoplay
. Ce n'est pas vraiment nécessaire, car elle est false par défaut, à moins que défini dans la balise video. La plupart des vidéo disponible est de 30 fps (ntsc/hd) ou 25 ips (pal) de façon générale, vous pouvez en toute sécurité basculer le dessin à l'intérieur de la boucle de sorte que vous ne dessiner que 30 fps (économie de 30 tirage ops par seconde).video,play();
comme la dernière ligne de la fonctionreadyToPlayVideo
c'est l'auditeur à l'événement médiatiquecanplay
Cependant, la vidéo ne peut pas jouer si elle n'est pas dans l'onglet du navigateur.Je tiens à fournir une solution qui utilise une syntaxe plus moderne et moins détaillées que celles déjà fournies:
Quelques liens utiles:
Vous devez mettre à jour currentTime élément vidéo, puis dessiner le cadre de la toile. Ne pas init play() de l'événement sur la vidéo.
Vous pouvez également l'utiliser pour ex. ce plugin https://github.com/tstabla/stVideo