Come inserire un audio
Punta l'elemento <audio> a un file audio e aggiungi controls:
<audio src="song.mp3" controls></audio>
controls mostra il player del browser: play e pausa, una barra di avanzamento, il tempo e il volume. Senza controls l'elemento non occupa alcuno spazio. L'anteprima non può caricare file dal tuo computer, quindi questo esempio crea un breve file WAV nel browser con uno script e lo usa come src. Premi play:
Il player ha un aspetto diverso in Chrome, Firefox e Safari, perché ogni browser disegna il suo. Cancella controls e il player sparisce, anche se l'audio c'è ancora e JavaScript può riprodurlo.
Attributi di audio
| Attributo | Cosa fa |
|---|---|
controls | Mostra il player del browser |
autoplay | Prova ad avviare la riproduzione al caricamento (bloccato con il sonoro, vedi sotto) |
loop | Ricomincia quando il file finisce |
muted | Parte con il volume spento |
preload | none (non scarica nulla fino al play), metadata (solo la durata) o auto (decide il browser) |
src | Il file da riprodurre; oppure usa figli <source> per più formati |
Usa preload="none" o "metadata" nelle pagine con molti player, come un elenco di episodi di un podcast, così la pagina non scarica subito tutti i file.
Formati e alternative
Elenca più file con <source> e il browser riproduce il primo che supporta. Il testo dentro l'elemento compare solo nei browser senza supporto per <audio>:
<audio controls preload="metadata">
<source src="episode.opus" type="audio/ogg; codecs=opus">
<source src="episode.mp3" type="audio/mpeg">
<p>Your browser cannot play audio. <a href="episode.mp3">Download the episode</a>.</p>
</audio>
| Formato | Tipo MIME | Note |
|---|---|---|
| MP3 | audio/mpeg | Si riproduce in tutti i browser attuali; la scelta sicura se ne usi uno solo |
AAC (.m4a) | audio/mp4 | Supportato ampiamente, buona qualità con file piccoli |
Opus o Vorbis (.ogg, .webm) | audio/ogg, audio/webm | File piccoli; aggiungi l'MP3 come alternativa, perché il supporto in Safari cambia da versione a versione |
| WAV | audio/wav | Non compresso e pesante; va bene per brevi effetti sonori |
Perché l'autoplay non funziona
I browser non lasciano che una pagina inizi a emettere suoni da sola. autoplay, o chiamare play() prima che l'utente abbia cliccato o toccato, viene rifiutato. Questo esempio prova a riprodurre al caricamento e scrive cosa è successo, poi offre un pulsante:
Di solito vedrai NotAllowedError, l'errore che il browser dà quando blocca la riproduzione. Il pulsante funziona perché un clic vale come permesso. Ogni browser ha le sue regole in più (Chrome, per esempio, ricorda i siti dove riproduci spesso contenuti multimediali), quindi non fare mai affidamento sull'autoplay: avvia il suono da un'azione dell'utente e gestisci sempre la promise che play() restituisce.
new Audio(url) crea un elemento audio in JavaScript senza aggiungerlo alla pagina, comodo per gli effetti sonori.
Crea i tuoi controlli
Nascondi il player integrato lasciando fuori controls, poi comanda l'elemento con la sua API JavaScript: play(), pause(), currentTime, duration, volume ed eventi come timeupdate e ended:
Il pulsante è un vero <button>, quindi funziona con la tastiera, e la sua etichetta passa da Play a Pause. Alla fine del file il browser mette in pausa l'elemento e lancia ended, così il pulsante torna da solo su Play. Se crei controlli personalizzati, ti fai carico anche di quello che quelli integrati ti davano gratis: supporto della tastiera, etichette e controllo del volume.
Accessibilità
- Non far mai partire un suono da solo. Interrompe i lettori di schermo e spaventa le persone. Avvia l'audio da un clic.
- Offri una trascrizione per podcast e audio parlato. Basta un link a una versione testuale sotto il player, e i motori di ricerca possono leggerla.
- Tieni
controls, oppure crea i controlli con veri pulsanti, così l'audio si può mettere in pausa con la tastiera.
Per video con audio, sottotitoli e immagini di copertina, vedi la pagina sul tag video; <audio> condivide gran parte dei suoi attributi e tutta la sua API JavaScript.
Errori comuni
- Dimenticare
controls. Senza, l'elemento è invisibile e sembra che non sia successo nulla. - Aspettarsi che
autoplayfunzioni. Avvia la riproduzione da un clic e gestisci la promise diplay(). - Percorso o tipo del file sbagliato. Apri direttamente l'URL del file per verificarlo, e fai corrispondere
typeal formato reale (audio/mpegper l'MP3). - Caricare tutti i file di un elenco lungo. Usa
preload="none"o"metadata". - Musica di sottofondo che non si può fermare. Dai sempre alle persone un modo visibile per mettere in pausa.
Domande frequenti
Come inserisco un audio in una pagina HTML?
Usa <audio src="song.mp3" controls></audio>. L'attributo controls mostra il player del browser con un pulsante play, una barra di avanzamento e il volume. Senza, l'elemento è invisibile.
Perché il mio audio non parte da solo?
I browser bloccano l'audio che parte con il sonoro prima che l'utente abbia interagito con la pagina. Avvia la riproduzione da un clic con audio.play(). Un elemento silenziato può partire da solo, ma per l'audio serve di rado.
Quale formato audio conviene usare in HTML?
L'MP3 si riproduce in tutti i browser attuali, quindi è la scelta sicura per un file singolo. Anche l'AAC in un file .m4a è supportato ampiamente. Usa elementi <source> per offrire più di un formato.
Come ripeto un audio in loop in HTML?
Aggiungi l'attributo loop: <audio src="rain.mp3" controls loop>. Quando il file finisce, ricomincia dall'inizio.
Come riproduco un suono con JavaScript?
Crea o seleziona un elemento audio e chiama play(), per esempio new Audio('click.mp3').play() dentro un gestore di clic. play() restituisce una promise che viene rifiutata se il browser blocca la riproduzione.
Posso dare stile al player audio HTML?
Solo un po': puoi impostarne larghezza, margine e display, ma i pulsanti interni li disegna il browser e sono diversi in ognuno. Per un aspetto tuo, nascondi i controlli e crea i tuoi con dei pulsanti e l'API audio di JavaScript.