Insieme all'immagine del poster, voglio che venga visualizzata un'immagine del caricatore (una gif animata) durante il download del video. Come è possibile ?Come aggiungere l'immagine del caricatore ai video HTML5?
risposta
È possibile collegare un ascoltatore all'evento loadstart
del video e utilizzarlo per sovrapporre una GIF animata sopra l'elemento video, quindi nascondere la sovrapposizione di caricamento una volta generato l'evento loadeddata
. Vedere The W3C's media events draft per un elenco di eventi a cui è possibile collegarsi.
Hanno anche un demo page for media events.
Questo è piuttosto complicato, è necessario ascoltare vari eventi video per mostrare/nascondere & larghezza di aggiornamento dell'immagine del caricatore correttamente. Tali eventi includono (ma non sono limitati a): loadstart
, progress
, loadeddata
, waiting
, seeking
, seeked
. Puoi utilizzare un determinato lettore open source (ad esempio jPlayer) o scaricare la sua fonte per ulteriori informazioni.
Un modo economico potrebbe essere utilizzare una GIF animata nell'attributo poster
che verrà sostituito quando il video inizia a essere riprodotto. Esempio:
<video poster="loading.gif" preload="auto" controls autoplay>
<source type="video/mp4" src="video.mp4"/>
</video>
Mi c'è voluto troppo tempo per capire davvero come fare questo, ma ho intenzione di condividerle qui perché ho finalmente 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')
});
Questo funziona perfettamente per me, ma testato solo in Chrome e Safari su Mac. Fammi sapere se qualcuno trova bug e/o miglioramenti!
Qui è la mia soluzione a questo problema in quanto la risposta di pixelearth non sembra lavorare su Firefox (probabilmente un problema con il manifesto falso)
HTML
<video id="video1" height="236" preload="auto" controls>
<source src="yourVideo.mp4">
Your browser does not support HTML5 video.
</video>
JS
$('#video1').on('loadstart', function (event) {
$(this).addClass('background');
$(this).attr("poster", "/your/loading.gif");
});
$('#video1').on('canplay', function (event) {
$(this).removeClass('background');
$(this).removeAttr("poster");
});
CSS
video.background {
background: black
}
Con questa risposta non è necessario scherzare con poster falsi o attributi di abuso per scopi per cui non sono stati creati. Spero che questo ti aiuti.
P.S. Naturalmente potresti aggiungere altri eventi per aggiungere l'attributo del poster, ad es. se non può giocare ulteriormente nel mezzo del video e ha bisogno di più di buffering
È possibile trovare una jsfiddle che mostra il mio codice here
- 1. Come accedere ai metodi video HTML5 con jQuery?
- 2. Come posso aggiungere filtri immagine core ai video OpenTok?
- 3. HTML5 Video: interruzione forzata del buffering
- 4. Sfondo video HTML5, mantenere il centro del video al centro
- 5. Streaming video HTML5/ricerca
- 6. problema video HTML5
- 7. HTML5 video ERR_CONTENT_LENGTH_MISMATCH
- 8. HTML5 Riproduzione video LAN
- 9. html5 oggetti interattivi video
- 10. HTML5 Video e degrado?
- 11. Android incorporato video HTML5
- 12. HTML5 Video Layering su iPad
- 13. HTML5 live video "hack"
- 14. Scrubbing video HTML5
- 15. Ricerca video HTML5 [aggiornata]
- 16. Controlli javascript video HTML5 - riavvio video
- 17. Come funziona il buffering del player video HTML5 di Youtube?
- 18. Come eseguire un'istantanea del lettore video basato su HTML5 JavaScript?
- 19. Come impedire il caricamento del video html5 prima della riproduzione?
- 20. Lettore video HTML5: caricamento dinamico dei video
- 21. HTML5 video non riprodotto
- 22. HTML5 Volume video
- 23. Modifica video in riproduzione in video HTML5
- 24. riproduzione video pausa HTML5 JavaScript
- 25. HTML5 <video> callback?
- 26. HTML5 streaming video - è possibile?
- 27. Come riprodurre video di YouTube tramite tag video HTML5
- 28. Html5 registrazione video e upload?
- 29. Mostra HTML5 Video Schermo intero
- 30. HTML5 tag video codec attribuiscono
bel lavoro in giro! – sputn1k