Come inserire un video
Punta l'elemento <video> su un file video e aggiungi controls perché chi legge possa riprodurlo:
<video src="movie.mp4" controls width="640"></video>
controls mostra il player integrato del browser: play e pausa, la barra di avanzamento, il volume e lo schermo intero. Senza, il video resta fermo lì. Questa anteprima non può caricare file video, quindi gli esempi di questa pagina alimentano l'elemento con una piccola animazione su canvas disegnata da uno script; gli attributi funzionano esattamente come con un file:
Dato che la sorgente è uno stream dal vivo e non un file, qui la barra di avanzamento non si può trascinare e non c'è una durata fissa. Con un vero .mp4, lo stesso player ha una barra di avanzamento completa.
Attributi di video
| Attributo | Cosa fa |
|---|---|
controls | Mostra i controlli del player del browser |
autoplay | Inizia la riproduzione appena possibile (in pratica solo con muted) |
muted | Parte con l'audio disattivato |
loop | Ricomincia dall'inizio quando finisce |
playsinline | Su iPhone si riproduce nella pagina invece di passare a schermo intero |
poster="thumb.jpg" | Immagine mostrata prima che il video parta |
preload | none, metadata (solo dimensioni e durata) o auto (il browser decide quanto scaricare) |
width, height | Dimensioni in pixel; impostarle entrambe riserva lo spazio prima che il video si carichi |
Autoplay, muted e loop
I browser bloccano i video che partono da soli con il sonoro. Un video senza audio può invece partire in automatico, ed è così che funzionano i video di sfondo e le brevi clip in loop:
I quattro attributi funzionano insieme: autoplay per partire, muted perché il browser lo permetta, loop per una clip e playsinline perché gli iPhone non lo aprano a schermo intero. Un video con il sonoro che parte da solo non è soltanto bloccato: è anche un problema per chi usa uno screen reader, la cui voce viene coperta. Se una clip dura più di cinque secondi, offri un modo per metterla in pausa.
Immagine poster e preload
poster mostra un'immagine prima che il video parta, come un'anteprima. Qui il video non ha nessuna sorgente, quindi il poster è l'unica cosa che si vede:
Con preload="none" il browser non scarica nulla finché chi legge non preme play, e il poster evita che lo spazio sembri vuoto. Usa preload="metadata" quando vuoi che la durata sia visibile prima della riproduzione. Senza poster, la maggior parte dei browser mostra il primo fotogramma appena lo ha caricato.
Formati e alternative con source
Al posto di src puoi elencare più file con elementi <source>. Il browser riproduce il primo che supporta:
<video controls width="640" poster="thumb.jpg">
<source src="movie.webm" type="video/webm">
<source src="movie.mp4" type="video/mp4">
<track kind="captions" src="captions.vtt" srclang="en" label="English">
<p>Your browser cannot play this video. <a href="movie.mp4">Download it</a>.</p>
</video>
L'MP4 con video H.264 si riproduce in tutti i browser attuali, quindi è la scelta sicura quando hai un solo file. L'attributo type permette al browser di saltare i formati che non sa riprodurre senza scaricarli. Il testo alla fine compare solo nei browser che non supportano affatto <video>.
Sottotitoli con track
<track kind="captions"> carica un file WebVTT, un file di testo semplice con righe temporizzate. Il browser aggiunge un pulsante per i sottotitoli ai suoi controlli e disegna il testo sopra il video:
WEBVTT
00:00:00.000 --> 00:00:03.000
Welcome to the course.
00:00:03.000 --> 00:00:06.500
Today we build our first web page.
I sottotitoli aiutano le persone sorde o con difficoltà uditive, chi guarda senza audio e chiunque segua un video in una seconda lingua. Aggiungi default a una traccia per mostrarla senza clic. Un file di sottotitoli da un altro dominio richiede gli header CORS e crossorigin sul video.
Stile e controllo con JavaScript
Un video è un elemento sostituito, come un'immagine: width: 100% con height: auto lo rende responsive, e object-fit decide come riempie un riquadro di forma diversa. JavaScript ha play(), pause(), currentTime, volume ed eventi come play, pause ed ended:
play() restituisce una promise che viene rifiutata quando il browser blocca la riproduzione (per esempio un autoplay con l'audio attivo), quindi il codice in produzione dovrebbe gestirla con catch. Creare controlli tuoi è facoltativo; i controls integrati sono accessibili da tastiera e tradotti, cose che i pulsanti personalizzati devono riprodurre. Per i video ospitati su YouTube o Vimeo, invece, incorpori il loro player con un iframe.
Errori comuni
- Autoplay senza
muted. Il browser lo blocca. Aggiungimutedeplaysinline. - Dimenticare
controls. A meno che tu non crei i tuoi, chi legge non ha modo di avviare il video. - Niente
widtheheight. La pagina salta quando il video si carica. Impostali entrambi, poi ridimensiona con il CSS. - File enormi. Comprimi i video per il web e usa
preload="none"o"metadata"per i video più in basso nella pagina. - Niente sottotitoli nei video parlati. Aggiungi un
<track kind="captions">.
Domande frequenti
Come inserisco un video in HTML?
Usa <video src="movie.mp4" controls width="640"></video>. L'attributo controls mostra il pulsante play, la barra di avanzamento e il volume del browser. Senza, il video mostra il primo fotogramma (o il poster) e l'utente non può avviarlo.
Perché l'autoplay del mio video non funziona?
I browser bloccano la riproduzione automatica con il sonoro. Aggiungi muted accanto ad autoplay, e playsinline perché gli iPhone lo riproducano nella pagina invece che a schermo intero: <video autoplay muted loop playsinline>.
Che formato video devo usare per il web?
L'MP4 con video H.264 si riproduce in tutti i browser attuali, quindi è la scelta sicura di default. Puoi indicare prima un file WebM più leggero con <source> e lasciare che il browser scelga il primo formato che supporta.
Come aggiungo un'anteprima a un video?
Usa l'attributo poster con l'URL di un'immagine: <video poster="thumb.jpg" controls>. L'immagine resta visibile finché il video non inizia a riprodursi.
Come aggiungo i sottotitoli a un video HTML?
Aggiungi un <track kind="captions" src="captions.vtt" srclang="it" label="Italiano"> dentro il video. Il file usa il formato WebVTT, e il browser mostra un pulsante per i sottotitoli nei suoi controlli.
Come rendo responsive un video?
Imposta width: 100% e height: auto nel CSS (oppure max-width: 100%). Il video si ridimensiona con il suo contenitore e mantiene le proporzioni.