Menu

Audio in HTML: il tag audio, controls, autoplay e loop

L'elemento <audio> riproduce file audio con il player integrato del browser. Impara il markup, gli attributi (controls, autoplay, loop, muted, preload), quali formati usare, perché l'autoplay con il sonoro viene bloccato e come creare il tuo pulsante play con JavaScript.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

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

AttributoCosa fa
controlsMostra il player del browser
autoplayProva ad avviare la riproduzione al caricamento (bloccato con il sonoro, vedi sotto)
loopRicomincia quando il file finisce
mutedParte con il volume spento
preloadnone (non scarica nulla fino al play), metadata (solo la durata) o auto (decide il browser)
srcIl 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>
FormatoTipo MIMENote
MP3audio/mpegSi riproduce in tutti i browser attuali; la scelta sicura se ne usi uno solo
AAC (.m4a)audio/mp4Supportato ampiamente, buona qualità con file piccoli
Opus o Vorbis (.ogg, .webm)audio/ogg, audio/webmFile piccoli; aggiungi l'MP3 come alternativa, perché il supporto in Safari cambia da versione a versione
WAVaudio/wavNon 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 autoplay funzioni. Avvia la riproduzione da un clic e gestisci la promise di play().
  • Percorso o tipo del file sbagliato. Apri direttamente l'URL del file per verificarlo, e fai corrispondere type al formato reale (audio/mpeg per 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.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA