Jak dodać dźwięk
Wskaż elementowi <audio> plik dźwiękowy i dodaj controls:
<audio src="song.mp3" controls></audio>
controls pokazuje odtwarzacz przeglądarki: odtwarzanie i pauzę, oś czasu, czas i regulację głośności. Bez controls element w ogóle nie zajmuje miejsca. Podgląd nie może wczytać plików z twojego komputera, więc ten przykład tworzy w przeglądarce skryptem krótki plik WAV i używa go jako src. Naciśnij odtwarzanie:
Odtwarzacz wygląda inaczej w Chrome, Firefoksie i Safari, bo każda przeglądarka rysuje własny. Usuń controls, a odtwarzacz zniknie, choć dźwięk nadal będzie dostępny do odtworzenia z JavaScriptu.
Atrybuty audio
| Atrybut | Do czego służy |
|---|---|
controls | Pokazuje odtwarzacz przeglądarki |
autoplay | Próbuje rozpocząć odtwarzanie po załadowaniu (z dźwiękiem blokowane, patrz niżej) |
loop | Zaczyna od nowa, gdy plik się skończy |
muted | Startuje z wyłączoną głośnością |
preload | none (nic nie pobiera do czasu odtworzenia), metadata (tylko długość) lub auto (decyduje przeglądarka) |
src | Plik do odtworzenia; albo użyj dzieci <source> dla kilku formatów |
Na stronach z wieloma odtwarzaczami, np. na liście odcinków podcastu, używaj preload="none" lub "metadata", żeby strona nie pobierała od razu każdego pliku.
Formaty i treść zastępcza
Wypisz kilka plików za pomocą <source>, a przeglądarka odtworzy pierwszy, który obsługuje. Tekst wewnątrz elementu pokazuje się tylko w przeglądarkach bez obsługi <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>
| Format | Typ MIME | Uwagi |
|---|---|---|
| MP3 | audio/mpeg | Działa we wszystkich obecnych przeglądarkach; bezpieczny wybór, gdy masz jeden plik |
AAC (.m4a) | audio/mp4 | Szerokie wsparcie, dobra jakość przy małym rozmiarze |
Opus lub Vorbis (.ogg, .webm) | audio/ogg, audio/webm | Małe pliki; dodaj MP3 jako zapas, bo wsparcie w Safari zależy od wersji |
| WAV | audio/wav | Bez kompresji i duży; nadaje się do krótkich efektów dźwiękowych |
Dlaczego autoplay nie działa
Przeglądarki nie pozwalają stronie samodzielnie zacząć wydawać dźwięku. autoplay albo wywołanie play(), zanim użytkownik kliknie lub dotknie ekranu, zostaje odrzucone. Ten przykład próbuje odtworzyć dźwięk po załadowaniu i wypisuje, co się stało, a potem daje przycisk:
Zwykle zobaczysz NotAllowedError, czyli błąd, który przeglądarka zgłasza, gdy blokuje odtwarzanie. Przycisk działa, bo kliknięcie liczy się jako zgoda. Każda przeglądarka ma własne dodatkowe reguły (Chrome na przykład zapamiętuje strony, na których często odtwarzasz multimedia), więc nigdy nie polegaj na autoplay: uruchamiaj dźwięk w reakcji na działanie użytkownika i zawsze obsługuj obietnicę zwracaną przez play().
new Audio(url) tworzy element audio w JavaScripcie bez dodawania go do strony, co przydaje się przy efektach dźwiękowych.
Własne kontrolki
Ukryj wbudowany odtwarzacz, pomijając controls, a potem steruj elementem przez jego API w JavaScripcie: play(), pause(), currentTime, duration, volume oraz zdarzenia takie jak timeupdate i ended:
Przycisk to prawdziwy <button>, więc działa z klawiatury, a jego etykieta zmienia się między Play i Pause. Na końcu pliku przeglądarka pauzuje element i wywołuje zdarzenie ended, więc przycisk sam wraca do Play. Budując własne kontrolki, bierzesz na siebie też to, co wbudowane dawały za darmo: obsługę klawiatury, etykiety i regulację głośności.
Dostępność
- Nigdy nie włączaj dźwięku samoczynnie. Przerywa to czytniki ekranu i zaskakuje ludzi. Uruchamiaj dźwięk kliknięciem.
- Udostępnij transkrypcję podcastów i nagrań mowy. Wystarczy link do wersji tekstowej pod odtwarzaczem, a wyszukiwarki też mogą ją przeczytać.
- Zostaw
controlsalbo zbuduj kontrolki z prawdziwych przycisków, żeby dźwięk dało się zatrzymać z klawiatury.
O wideo z dźwiękiem, napisach i plakatach przeczytasz na stronie o znaczniku video; <audio> ma większość jego atrybutów i całe API w JavaScripcie.
Częste błędy
- Brak
controls. Bez niego element jest niewidoczny i wygląda, jakby nic się nie stało. - Liczenie na to, że
autoplayzadziała. Uruchamiaj odtwarzanie kliknięciem i obsługuj obietnicę zplay(). - Zła ścieżka lub typ pliku. Otwórz adres pliku bezpośrednio, żeby go sprawdzić, i dopasuj
typedo prawdziwego formatu (audio/mpegdla MP3). - Wczytywanie każdego pliku z długiej listy. Użyj
preload="none"lub"metadata". - Muzyka w tle, której nie da się wyłączyć. Zawsze daj widoczny sposób na pauzę.
Najczęściej zadawane pytania
Jak dodać dźwięk do strony HTML?
Użyj <audio src="song.mp3" controls></audio>. Atrybut controls pokazuje odtwarzacz przeglądarki z przyciskiem odtwarzania, osią czasu i głośnością. Bez niego element jest niewidoczny.
Dlaczego mój dźwięk nie odtwarza się automatycznie?
Przeglądarki blokują dźwięk, który zaczyna grać, zanim użytkownik wejdzie w interakcję ze stroną. Zamiast tego uruchom odtwarzanie kliknięciem przez audio.play(). Wyciszony element może odtworzyć się automatycznie, ale w przypadku audio rzadko ma to sens.
Jakiego formatu audio używać w HTML?
MP3 działa we wszystkich obecnych przeglądarkach, więc to bezpieczny wybór, gdy masz jeden plik. AAC w pliku .m4a też ma szerokie wsparcie. Aby zaoferować więcej niż jeden format, użyj elementów <source>.
Jak zapętlić dźwięk w HTML?
Dodaj atrybut loop: <audio src="rain.mp3" controls loop>. Gdy plik się skończy, zacznie się od nowa.
Jak odtworzyć dźwięk w JavaScripcie?
Utwórz lub wybierz element audio i wywołaj play(), na przykład new Audio('click.mp3').play() w obsłudze kliknięcia. play() zwraca obietnicę (promise), która zostaje odrzucona, jeśli przeglądarka zablokuje odtwarzanie.
Czy mogę zmienić wygląd odtwarzacza audio w HTML?
Tylko trochę: możesz ustawić jego szerokość, margines i display, ale przyciski w środku rysuje przeglądarka i w każdej wyglądają inaczej. Aby uzyskać własny wygląd, ukryj kontrolki i zbuduj swoje z przycisków i API audio w JavaScripcie.