Cara menambahkan audio
Arahkan elemen <audio> ke sebuah file suara dan tambahkan controls:
<audio src="song.mp3" controls></audio>
controls menampilkan pemutar browser: play dan pause, timeline, waktu, dan pengatur volume. Tanpa controls, elemen ini sama sekali tidak memakan tempat. Pratinjau tidak bisa memuat file dari komputermu, jadi contoh ini membuat file WAV pendek di browser dengan sebuah script dan memakainya sebagai src. Tekan play:
Pemutarnya terlihat berbeda di Chrome, Firefox dan Safari, karena setiap browser menggambar pemutarnya sendiri. Hapus controls dan pemutarnya hilang, walaupun audionya masih ada dan bisa diputar oleh JavaScript.
Atribut audio
| Atribut | Fungsinya |
|---|---|
controls | Menampilkan pemutar browser |
autoplay | Mencoba mulai memutar saat halaman dimuat (diblokir kalau bersuara, lihat di bawah) |
loop | Mulai lagi saat file selesai |
muted | Mulai dengan volume mati |
preload | none (tidak mengunduh apa pun sampai diputar), metadata (hanya durasinya) atau auto (browser yang memutuskan) |
src | File yang diputar; atau pakai elemen anak <source> untuk beberapa format |
Pakai preload="none" atau "metadata" di halaman dengan banyak pemutar, seperti daftar episode podcast, supaya halaman tidak langsung mengunduh semua file.
Format dan fallback
Daftarkan beberapa file dengan <source> dan browser akan memutar file pertama yang didukungnya. Teks di dalam elemen hanya muncul di browser yang tidak mendukung <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 | Tipe MIME | Catatan |
|---|---|---|
| MP3 | audio/mpeg | Bisa diputar di semua browser saat ini; pilihan tunggal yang aman |
AAC (.m4a) | audio/mp4 | Didukung luas, kualitas bagus dengan ukuran kecil |
Opus atau Vorbis (.ogg, .webm) | audio/ogg, audio/webm | File kecil; sertakan MP3 sebagai fallback, karena dukungan Safari berbeda di tiap versi |
| WAV | audio/wav | Tidak terkompresi dan besar; cocok untuk efek suara pendek |
Kenapa autoplay gagal
Browser tidak mengizinkan halaman mulai bersuara dengan sendirinya. autoplay, atau memanggil play() sebelum pengguna mengklik atau mengetuk, akan ditolak. Contoh ini mencoba memutar saat halaman dimuat dan menampilkan apa yang terjadi, lalu menyediakan sebuah tombol:
Biasanya kamu akan melihat NotAllowedError, error yang diberikan browser saat memblokir pemutaran. Tombolnya berhasil karena klik dihitung sebagai izin. Setiap browser punya aturan tambahannya sendiri (Chrome, misalnya, mengingat situs tempat kamu sering memutar media), jadi jangan pernah mengandalkan autoplay: mulai suara dari tindakan pengguna, dan selalu tangani promise yang dikembalikan play().
new Audio(url) membuat elemen audio di JavaScript tanpa menambahkannya ke halaman, yang praktis untuk efek suara.
Membuat kontrol sendiri
Sembunyikan pemutar bawaan dengan tidak menulis controls, lalu kendalikan elemennya dengan API JavaScript-nya: play(), pause(), currentTime, duration, volume, dan event seperti timeupdate dan ended:
Tombolnya adalah <button> sungguhan, jadi bisa dipakai dengan keyboard, dan labelnya berganti antara Play dan Pause. Di akhir file, browser menghentikan elemen dan memicu ended, jadi tombol kembali ke Play dengan sendirinya. Kalau kamu membuat kontrol sendiri, kamu juga mengambil alih hal yang dulu diberikan kontrol bawaan secara gratis: dukungan keyboard, label, dan pengatur volume.
Aksesibilitas
- Jangan pernah memulai suara dengan sendirinya. Suara seperti itu mengganggu screen reader dan mengagetkan orang. Mulai audio dari sebuah klik.
- Sediakan transkrip untuk podcast dan audio berisi ucapan. Link ke versi teks di bawah pemutar sudah cukup, dan mesin pencari bisa membacanya.
- Pertahankan
controls, atau buat kontrol dari tombol sungguhan, supaya audio bisa di-pause dengan keyboard.
Untuk video dengan suara, teks terjemahan, dan poster, lihat halaman tag video; <audio> memakai sebagian besar atribut yang sama dan seluruh API JavaScript-nya.
Kesalahan umum
- Lupa menulis
controls. Elemennya tidak terlihat tanpa atribut itu, dan seolah tidak terjadi apa-apa. - Berharap
autoplayberhasil. Mulai pemutaran dari sebuah klik dan tangani promise dariplay(). - Path atau tipe file yang salah. Buka URL file secara langsung untuk memeriksanya, dan cocokkan
typedengan format aslinya (audio/mpeguntuk MP3). - Memuat semua file di daftar yang panjang. Pakai
preload="none"atau"metadata". - Musik latar yang tidak bisa dihentikan. Selalu beri orang cara yang terlihat untuk menghentikannya.
Pertanyaan yang sering diajukan
Bagaimana cara menambahkan audio ke halaman HTML?
Pakai <audio src="song.mp3" controls></audio>. Atribut controls menampilkan pemutar browser dengan tombol play, timeline dan volume. Tanpa atribut itu, elemennya tidak terlihat.
Kenapa audioku tidak autoplay?
Browser memblokir audio yang mulai bersuara sebelum pengguna berinteraksi dengan halaman. Mulai pemutaran dari sebuah klik dengan audio.play(). Elemen yang di-mute boleh autoplay, tapi untuk audio hal itu jarang berguna.
Format audio apa yang sebaiknya dipakai di HTML?
MP3 bisa diputar di semua browser saat ini, jadi itu pilihan aman untuk satu file. AAC di file .m4a juga didukung luas. Pakai elemen <source> untuk menawarkan lebih dari satu format.
Bagaimana cara membuat audio berulang di HTML?
Tambahkan atribut loop: <audio src="rain.mp3" controls loop>. Saat file selesai, audio mulai lagi dari awal.
Bagaimana cara memutar suara dengan JavaScript?
Buat atau pilih elemen audio lalu panggil play(), misalnya new Audio('click.mp3').play() di dalam handler klik. play() mengembalikan promise yang akan reject kalau browser memblokir pemutaran.
Bisakah aku mengubah gaya pemutar audio HTML?
Hanya sedikit: kamu bisa mengatur lebar, margin dan display-nya, tapi tombol di dalamnya digambar oleh browser dan terlihat berbeda di setiap browser. Untuk tampilan sendiri, sembunyikan controls lalu buat kontrolmu sendiri dengan tombol dan API JavaScript untuk audio.