Estou tentando obter as dimensões de um vídeo que estou sobrepondo em uma página com JavaScript, no entanto, ele está retornando as dimensões da imagem do pôster em vez do vídeo real, pois parece que está sendo calculado antes de o vídeo ser carregado.
javascript
jquery
html5-video
Elliot
fonte
fonte
Respostas:
Especificação: https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element
fonte
Deve-se notar que a solução atualmente aceita acima pela Sime Vidas não funciona realmente em navegadores modernos, uma vez que as propriedades videoWidth e videoHeight não são definidas até que o evento "carregadometadata" seja disparado.
Se acontecer de você consultar essas propriedades o suficiente após o elemento VIDEO ser renderizado, às vezes pode funcionar, mas na maioria dos casos, isso retornará valores 0 para ambas as propriedades.
Para garantir que você está obtendo os valores de propriedade corretos, você precisa fazer algo como:
NOTA: Não me preocupei em contabilizar as versões anteriores a 9 do Internet Explorer que usam attachEvent em vez de addEventListener, uma vez que as versões anteriores a 9 desse navegador não suportam vídeo HTML5, de qualquer maneira.
fonte
loadedmetadata
disparados. Acabei de ver no Chromium 69. Ouvirloadeddata
é uma aposta mais segura.Função pronta para usar
Aqui está uma função pronta para usar que retorna as dimensões de um vídeo de forma assíncrona, sem alterar nada no documento .
Aqui está o vídeo usado para o trecho, se você quiser vê-lo: Big Buck Bunny
fonte
Ouça o
loadedmetadata
evento que é despachado quando o agente do usuário acaba de determinar a duração e as dimensões do recurso de mídiaSeção 4.7.10.16 Resumo do evento
https://www.w3.org/TR/html5/semantics-embedded-content.html#eventdef-media-loadedmetadata
fonte
É assim que pode ser feito no Vue:
fonte
Em Vuejs eu uso o seguinte código na tag montada.
fonte