J'essaie d'obtenir les dimensions d'une vidéo que je superpose sur une page avec JavaScript, mais il renvoie les dimensions de l'image de l'affiche au lieu de la vidéo réelle, car il semble qu'elle soit calculée avant le chargement de la vidéo.
javascript
jquery
html5-video
Elliot
la source
la source
Réponses:
Spécification: https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element
la source
Il convient de noter que la solution actuellement acceptée ci-dessus par Sime Vidas ne fonctionne pas réellement dans les navigateurs modernes puisque les propriétés videoWidth et videoHeight ne sont définies qu'après le déclenchement de l'événement "sharedmetadata".
Si vous interrogez ces propriétés assez loin après le rendu de l'élément VIDEO, cela peut parfois fonctionner, mais dans la plupart des cas, cela retournera des valeurs de 0 pour les deux propriétés.
Pour garantir que vous obtenez les valeurs de propriété correctes, vous devez faire quelque chose du genre:
REMARQUE: Je n'ai pas pris la peine de comptabiliser les versions antérieures à la 9 d'Internet Explorer qui utilisent attachEvent au lieu de addEventListener car les versions antérieures à la 9 de ce navigateur ne prennent pas en charge la vidéo HTML5, de toute façon.
la source
loadedmetadata
incendie. Je viens de le voir sur Chromium 69. Écouterloadeddata
est un pari plus sûr.Fonction prête à l'emploi
Voici une fonction prête à l'emploi qui renvoie les dimensions d'une vidéo de manière asynchrone, sans rien changer dans le document .
Voici la vidéo utilisée pour l'extrait si vous souhaitez le voir: Big Buck Bunny
la source
Écoutez l'
loadedmetadata
événement qui est distribué lorsque l'agent utilisateur vient de déterminer la durée et les dimensions de la ressource multimédiaSection 4.7.10.16 Résumé des événements
https://www.w3.org/TR/html5/semantics-embedded-content.html#eventdef-media-loadedmetadata
la source
Voici comment cela peut être fait dans Vue:
la source
Dans Vuejs, j'utilise le code suivant dans la balise montée.
la source