Menu

HTML Audio einbinden: das audio-Tag, controls, autoplay, loop

Das <audio>-Element spielt Tondateien mit dem eingebauten Player des Browsers ab. Hier lernst du das Markup, die Attribute (controls, autoplay, loop, muted, preload), welche Formate du verwendest, warum Autoplay mit Ton blockiert wird und wie du mit JavaScript einen eigenen Play-Button baust.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

So fügst du Audio ein

Lass das <audio>-Element auf eine Tondatei zeigen und füg controls hinzu:

<audio src="song.mp3" controls></audio>

controls zeigt den Player des Browsers: Abspielen und Pause, eine Zeitleiste, die Zeit und eine Lautstärkeregelung. Ohne controls nimmt das Element überhaupt keinen Platz ein. Die Vorschau kann keine Dateien von deinem Computer laden, deshalb erzeugt dieses Beispiel per Skript im Browser eine kurze WAV-Datei und nimmt sie als src. Drück auf Play:

Der Player sieht in Chrome, Firefox und Safari unterschiedlich aus, weil jeder Browser seinen eigenen zeichnet. Lösch controls, und der Player verschwindet, auch wenn das Audio für JavaScript zum Abspielen noch da ist.

Audio-Attribute

AttributWas es macht
controlsZeigt den Player des Browsers
autoplayVersucht, beim Laden abzuspielen (mit Ton blockiert, siehe unten)
loopBeginnt am Ende der Datei von vorn
mutedStartet mit ausgeschalteter Lautstärke
preloadnone (nichts laden bis Play), metadata (nur die Länge) oder auto (der Browser entscheidet)
srcDie abzuspielende Datei; oder <source>-Kindelemente für mehrere Formate

Nimm preload="none" oder "metadata" auf Seiten mit vielen Playern, etwa einer Liste von Podcast-Folgen, damit die Seite nicht vorab jede Datei herunterlädt.

Formate und Fallbacks

Führ mit <source> mehrere Dateien auf, und der Browser spielt die erste ab, die er unterstützt. Text im Element erscheint nur in Browsern ohne Unterstützung für <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>
FormatMIME-TypHinweise
MP3audio/mpegLäuft in jedem aktuellen Browser; die sichere Wahl für eine einzelne Datei
AAC (.m4a)audio/mp4Breit unterstützt, gute Qualität bei kleiner Größe
Opus oder Vorbis (.ogg, .webm)audio/ogg, audio/webmKleine Dateien; führ MP3 als Fallback auf, weil die Unterstützung in Safari je nach Version schwankt
WAVaudio/wavUnkomprimiert und groß; gut für kurze Soundeffekte

Warum autoplay scheitert

Browser lassen eine Seite nicht von selbst Töne abspielen. autoplay oder ein Aufruf von play(), bevor der Nutzer geklickt oder getippt hat, wird abgelehnt. Dieses Beispiel versucht beim Laden abzuspielen, gibt aus, was passiert ist, und bietet dann einen Button an:

Meistens siehst du NotAllowedError, den Fehler, den ein Browser beim Blockieren der Wiedergabe liefert. Der Button funktioniert, weil ein Klick als Erlaubnis zählt. Jeder Browser hat eigene zusätzliche Regeln (Chrome merkt sich zum Beispiel Websites, auf denen du oft Medien abspielst), verlass dich also nie auf autoplay: Starte Töne durch eine Aktion des Nutzers und behandle immer das Promise, das play() zurückgibt.

new Audio(url) erzeugt in JavaScript ein audio-Element, ohne es der Seite hinzuzufügen; praktisch für Soundeffekte.

Eigene Steuerelemente bauen

Versteck den eingebauten Player, indem du controls weglässt, und steuere das Element über seine JavaScript-API: play(), pause(), currentTime, duration, volume und Events wie timeupdate und ended:

Der Button ist ein echter <button>, funktioniert also mit der Tastatur, und seine Beschriftung wechselt zwischen Play und Pause. Am Ende der Datei pausiert der Browser das Element und feuert ended, der Button springt also von selbst auf Play zurück. Wenn du eigene Steuerelemente baust, übernimmst du auch, was dir die eingebauten geschenkt haben: Tastaturbedienung, Beschriftungen und eine Lautstärkeregelung.

Barrierefreiheit

  • Starte Ton nie von selbst. Er unterbricht Screenreader und erschreckt Menschen. Starte Audio mit einem Klick.
  • Biete ein Transkript an für Podcasts und gesprochenes Audio. Ein Link zu einer Textfassung unter dem Player reicht, und Suchmaschinen können ihn lesen.
  • Behalte controls oder bau Steuerelemente aus echten Buttons, damit sich das Audio per Tastatur anhalten lässt.

Für Videos mit Ton, Untertiteln und Vorschaubildern siehe die Seite zum HTML Video; <audio> teilt die meisten seiner Attribute und die ganze JavaScript-API.

Häufige Fehler

  • controls vergessen. Ohne ist das Element unsichtbar, und es sieht aus, als wäre nichts passiert.
  • Erwarten, dass autoplay funktioniert. Starte die Wiedergabe bei einem Klick und behandle das Promise von play().
  • Ein falscher Dateipfad oder Typ. Öffne die Datei-URL direkt, um sie zu prüfen, und pass type an das echte Format an (audio/mpeg für MP3).
  • Jede Datei einer langen Liste laden. Nimm preload="none" oder "metadata".
  • Hintergrundmusik, die sich nicht stoppen lässt. Gib den Leuten immer eine sichtbare Möglichkeit, sie anzuhalten.

Häufig gestellte Fragen

Wie füge ich einer HTML-Seite Audio hinzu?

Mit <audio src="song.mp3" controls></audio>. Das Attribut controls zeigt den Player des Browsers mit Play-Button, Zeitleiste und Lautstärke. Ohne es ist das Element unsichtbar.

Warum startet mein Audio nicht automatisch?

Browser blockieren Audio, das mit Ton startet, bevor der Nutzer mit der Seite interagiert hat. Starte die Wiedergabe stattdessen bei einem Klick mit audio.play(). Ein stummgeschaltetes Element darf automatisch starten, aber bei Audio bringt das selten etwas.

Welches Audioformat soll ich in HTML verwenden?

MP3 läuft in jedem aktuellen Browser und ist daher die sichere Wahl für eine einzelne Datei. AAC in einer .m4a-Datei wird ebenfalls breit unterstützt. Mit <source>-Elementen bietest du mehr als ein Format an.

Wie spiele ich Audio in HTML in Schleife ab?

Füg das Attribut loop hinzu: <audio src="rain.mp3" controls loop>. Wenn die Datei zu Ende ist, beginnt sie wieder von vorn.

Wie spiele ich mit JavaScript einen Ton ab?

Erzeug oder wähl ein audio-Element aus und ruf play() auf, zum Beispiel new Audio('click.mp3').play() in einem Klick-Handler. play() gibt ein Promise zurück, das abgelehnt wird, wenn der Browser die Wiedergabe blockiert.

Kann ich den HTML-Audio-Player stylen?

Nur ein wenig: Du kannst Breite, margin und display setzen, aber die Buttons darin zeichnet der Browser, und sie sehen in jedem anders aus. Für ein eigenes Aussehen versteckst du die controls und baust eigene mit Buttons und der JavaScript-API für Audio.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S