Me tomó demasiado tiempo entender realmente cómo hacer esto, pero lo voy a compartir aquí porque ¡FINALMENTE encontré la manera! Lo cual es ridículo cuando lo piensas, porque cargar es algo que todos los videos tienen que hacer. Pensarías que lo habrían tenido en cuenta al crear el estándar de video html5.
Mi teoría original que pensé que debería haber trabajado (pero no lo haría) fue la carga de imágenes bg esta
- Añadir a video al cargar a través de js y css
- Quitar cuando esté listo para jugar
Simple, ¿verdad? El problema era que no podía mostrar la imagen de fondo cuando se configuraban los elementos de origen, o se configuraba el atributo video.src. El golpe final de genio/suerte fue descubrir (a través de la experimentación) que la imagen de fondo no desaparecerá si el póster está configurado para algo. Estoy usando una imagen de póster falso, pero me imagino que funcionaría también con una imagen transparente de 1x1 (pero ¿por qué preocuparse por tener otra imagen?). Esto hace que esto sea probablemente una especie de truco, pero funciona y no tengo que agregar marcas adicionales a mi código, lo que significa que funcionará en todos mis proyectos usando video html5. (Clase de carga aplicado al vídeo con JS)
HTML
<video controls="" poster="data:image/gif,AAAA">
<source src="yourvid.mp4"
</video>
CSS
video.loading {
background: black url(/images/loader.gif) center center no-repeat;
}
JS
$('#video_id').on('loadstart', function (event) {
$(this).addClass('loading');
});
$('#video_id').on('canplay', function (event) {
$(this).removeClass('loading');
$(this).attr('poster', '');
});
Esto funciona perfectamente para mí, pero sólo probado en Chrome y Safari en Mac. ¡Avíseme si alguien encuentra errores o mejoras!
hola, yo ya tenía lugar un póster. pero puede haber un lapso de tiempo entre el usuario, haga clic en el botón "reproducir" y comience a jugar –
Luego verá el negro del video, lo mejor es recortar el video para eliminar la negrura inicial o agregar la misma imagen de lugar en el inicio del video, si un usuario presiona reproducir, entonces el video se está reproduciendo para que lo vea y, si se detiene, escuchará la última imagen que estaba reproduciendo –
porque mis aplicaciones asp.net son una página móvil, es necesario que el usuario haga clic en el video para reproducir el video (Android, iPhone no admite reproducción automática). para que no pueda hacer un logotipo de "carga" como póster; de lo contrario, el usuario lo confundirá. Quiero mostrar un logotipo de carga cuando el usuario hace clic en el botón de reproducción en el iPad. –