Mi ci è voluto troppo tempo per capire come farlo, ma lo condividerò qui perché FINALMENTE ho trovato un modo! Il che è ridicolo quando ci pensi, perché caricare è qualcosa che tutti i video devono fare. Penseresti che ne avrebbero tenuto conto al momento della creazione dello standard video html5.
La mia teoria originale che ho pensato che avrebbe dovuto funzionare (ma non sarebbe) è stato il caricamento delle immagini bg questo
- Aggiungi al video durante il caricamento tramite js e css
- Remove quando si è pronti a giocare
Semplice, giusto? Il problema era che non riuscivo a far visualizzare l'immagine di sfondo quando sono stati impostati gli elementi di origine o se è stato impostato l'attributo video.src. L'ultimo colpo di genio/fortuna è stato scoprire (attraverso la sperimentazione) che l'immagine di sfondo non scomparirà se il poster è impostato su qualcosa. Sto usando un'immagine di un manifesto falso, ma immagino che possa funzionare anche con un'immagine 1x1 trasparente (ma perché preoccuparsi di avere un'altra immagine). Quindi questo rende questo probabilmente una sorta di hack, ma funziona e non devo aggiungere extra markup al mio codice, il che significa che funzionerà su tutti i miei progetti usando il video html5. (Classe di carico applicata al video 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', '');
});
Questo funziona perfettamente per me, ma testato solo in Chrome e Safari su Mac. Fammi sapere se qualcuno trova bug e/o miglioramenti!
ciao, ho avuto già luogo un poster. ma potrebbe esserci un intervallo di tempo tra l'utente e il pulsante "play" e iniziare a giocare –
Quindi stai vedendo il nero del video stesso, è meglio ritagliare il video per rimuovere l'inizio del buio o aggiungere la stessa immagine del luogo all'inizio del video, se un utente preme la riproduzione, il video viene riprodotto in modo che lo vedano e se poi si interrompe nel buffer vedono l'ultima immagine che stava riproducendo –
perché le mie app asp.net sono una pagina mobile, è necessario che l'utente faccia clic sul video per riprodurre il video (Android, iPhone non supporta la riproduzione automatica). in modo che non possa creare un logo di "caricamento" come poster, altrimenti l'utente confonderà. Voglio visualizzare un logo di caricamento quando l'utente fa clic sul pulsante di riproduzione su iPad. –