HTML5 memperkenalkan tag <audio> dan <video> yang memungkinkan kita menyematkan media langsung ke halaman web tanpa plugin tambahan seperti Flash. Cukup dengan HTML murni, browser sudah bisa memutar audio dan video.
<audio> — Menyematkan SuaraStruktur dasarnya sangat sederhana:
<audio src="musik.mp3" controls></audio>
Atribut controls adalah yang membuat tombol play, pause, volume, dan progress bar muncul. Tanpanya, audio tetap ada di halaman tapi tidak ada antarmuka untuk memutarnya.
<audio><audio
src="podcast.mp3"
controls
autoplay
loop
muted
preload="auto"
>
</audio>
| Atribut | Fungsi |
|---|---|
controls |
Tampilkan tombol kontrol player |
autoplay |
Putar otomatis saat halaman dibuka |
loop |
Ulangi dari awal setelah selesai |
muted |
Mulai dalam kondisi bisu |
preload |
Cara browser memuat file audio |
Nilai preload:
preload="auto" → browser memuat seluruh file di background
preload="metadata" → hanya muat informasi dasar (durasi, dll)
preload="none" → tidak dimuat sampai user menekan play
⚠️
autoplayseringkali diblokir browser modern kecuali dikombinasikan denganmuted— browser menganggap audio autoplay tanpa mute sebagai pengalaman yang mengganggu pengguna.
Tidak semua browser mendukung format audio yang sama. Gunakan tag <source> untuk menyediakan beberapa format sekaligus — browser akan memilih yang pertama bisa diputar:
<audio controls>
<source src="musik.ogg" type="audio/ogg">
<source src="musik.mp3" type="audio/mpeg">
<source src="musik.wav" type="audio/wav">
<!-- Pesan fallback jika browser tidak support tag audio sama sekali -->
<p>Browser Anda tidak mendukung pemutaran audio.
<a href="musik.mp3">Unduh file audio</a> untuk mendengarkannya.</p>
</audio>
Browser membaca <source> dari atas ke bawah dan menggunakan yang pertama didukung.
| Format | Ekstensi | Dukungan Browser |
|---|---|---|
| MP3 | .mp3 |
Semua browser modern ✅ |
| OGG Vorbis | .ogg |
Firefox, Chrome, Opera |
| WAV | .wav |
Semua browser modern ✅ |
| AAC | .aac |
Chrome, Safari, Edge |
| WebM | .webm |
Chrome, Firefox, Opera |
Rekomendasi: Selalu sediakan minimal MP3 karena didukung hampir semua browser.
<video> — Menyematkan VideoStruktur dasarnya mirip dengan <audio>:
<video src="video.mp4" controls width="640" height="360"></video>
Atribut width dan height sangat disarankan untuk dicantumkan agar browser bisa mereservasi ruang sebelum video selesai dimuat — mencegah layout jumping.
<video><video
src="tutorial.mp4"
controls
autoplay
loop
muted
poster="thumbnail.jpg"
preload="metadata"
width="800"
height="450"
>
</video>
| Atribut | Fungsi |
|---|---|
controls |
Tampilkan kontrol player |
autoplay |
Putar otomatis |
loop |
Ulangi video |
muted |
Mulai dalam kondisi bisu |
poster |
Gambar thumbnail sebelum video diputar |
preload |
Cara browser memuat video |
width |
Lebar video dalam pixel |
height |
Tinggi video dalam pixel |
poster — Thumbnail Videoposter adalah atribut khusus <video> yang menentukan gambar yang tampil sebelum video diputar — seperti thumbnail di YouTube:
<video
controls
poster="cover-video.jpg"
width="800"
>
<source src="tutorial-html.mp4" type="video/mp4">
<source src="tutorial-html.webm" type="video/webm">
</video>
Tanpa poster, browser menampilkan frame pertama video atau layar hitam kosong.
Sama seperti audio, video sebaiknya disediakan dalam beberapa format:
<video controls width="800" height="450" poster="thumbnail.jpg">
<source src="film.webm" type="video/webm">
<source src="film.mp4" type="video/mp4">
<source src="film.ogv" type="video/ogg">
<!-- Fallback untuk browser sangat lama -->
<p>Browser Anda tidak mendukung tag video HTML5.
<a href="film.mp4">Klik di sini untuk mengunduh videonya.</a>
</p>
</video>
| Format | Ekstensi | Dukungan Browser |
|---|---|---|
| MP4 (H.264) | .mp4 |
Semua browser modern ✅ |
| WebM (VP8/VP9) | .webm |
Chrome, Firefox, Opera |
| OGG (Theora) | .ogv |
Firefox, Chrome, Opera |
Rekomendasi: Selalu sediakan MP4 sebagai format utama karena paling universal.
Secara default video tidak otomatis menyesuaikan lebar layar. Gunakan CSS untuk membuatnya responsif:
<style>
.video-container {
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.video-container video {
width: 100%;
height: auto;
border-radius: 10px;
box-shadow: 0 4px 20px rgba(0,0,0,0.15);
}
</style>
<div class="video-container">
<video controls poster="thumbnail.jpg">
<source src="tutorial.mp4" type="video/mp4">
</video>
</div>
Teknik klasik untuk mempertahankan rasio 16:9 di semua ukuran layar:
<style>
.video-wrapper {
position: relative;
padding-bottom: 56.25%; /* 16:9 ratio = 9/16 = 56.25% */
height: 0;
overflow: hidden;
}
.video-wrapper video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
<div class="video-wrapper">
<video controls>
<source src="video.mp4" type="video/mp4">
</video>
</div>
<track>Tag <track> digunakan untuk menambahkan subtitle, caption, atau deskripsi pada video — penting untuk aksesibilitas:
<video controls width="800" poster="thumbnail.jpg">
<source src="tutorial.mp4" type="video/mp4">
<!-- Subtitle Bahasa Indonesia -->
<track
src="subtitle-id.vtt"
kind="subtitles"
srclang="id"
label="Bahasa Indonesia"
default
>
<!-- Subtitle Bahasa Inggris -->
<track
src="subtitle-en.vtt"
kind="subtitles"
srclang="en"
label="English"
>
</video>
File subtitle menggunakan format WebVTT (.vtt):
WEBVTT
00:00:01.000 --> 00:00:04.000
Selamat datang di tutorial HTML dasar.
00:00:05.000 --> 00:00:09.000
Hari ini kita akan belajar tentang audio dan video embed.
kind pada <track>| Nilai | Fungsi |
|---|---|
subtitles |
Terjemahan dialog untuk penonton berbeda bahasa |
captions |
Teks dialog + deskripsi efek suara untuk tunarungu |
descriptions |
Deskripsi visual untuk tunanetra |
chapters |
Penanda bab untuk navigasi video |
metadata |
Data tambahan untuk diproses JavaScript |
Teknik umum di website modern untuk video background di bagian hero:
<style>
.hero {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
}
.hero video {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 100%;
min-height: 100%;
object-fit: cover;
}
.hero-overlay {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.5); /* overlay gelap di atas video */
display: flex;
align-items: center;
justify-content: center;
}
.hero-text {
color: white;
text-align: center;
}
</style>
<section class="hero">
<video autoplay muted loop playsinline>
<source src="background.mp4" type="video/mp4">
</video>
<div class="hero-overlay">
<div class="hero-text">
<h1>Selamat Datang</h1>
<p>Website dengan video background</p>
</div>
</div>
</section>
Atribut
playsinlinepenting untuk iOS — tanpa ini, video di Safari iPhone akan membuka fullscreen player secara otomatis.
Untuk video dari YouTube, Vimeo, dan platform lain — tidak bisa menggunakan <video>. Gunakan <iframe> dengan URL embed yang disediakan platform tersebut:
<!-- YouTube -->
<iframe
width="800"
height="450"
src="https://www.youtube.com/embed/VIDEO_ID"
title="Judul Video YouTube"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
>
</iframe>
<!-- Vimeo -->
<iframe
src="https://player.vimeo.com/video/VIDEO_ID"
width="800"
height="450"
frameborder="0"
allow="autoplay; fullscreen; picture-in-picture"
allowfullscreen
>
</iframe>
<video> vs <iframe> untuk Video| Aspek | <video> |
<iframe> YouTube |
|---|---|---|
| File | File video milik sendiri | Video di platform lain |
| Kontrol | Penuh — bisa dikustomisasi | Terbatas pada yang disediakan platform |
| Bandwidth | Dari server sendiri | Dari server YouTube/Vimeo |
| Kualitas | Tergantung file yang diupload | YouTube otomatis menyesuaikan |
| Kegunaan | Video produk, background, tutorial lokal | Video konten publik di YouTube |
Audio & Video (keduanya):
| Atribut | Fungsi |
|---|---|
controls |
Tampilkan kontrol player |
autoplay |
Putar otomatis |
loop |
Ulangi media |
muted |
Mulai bisu |
preload |
Strategi pemuatan |
src |
Sumber file media |
Khusus Video:
| Atribut | Fungsi |
|---|---|
poster |
Gambar thumbnail |
width |
Lebar player |
height |
Tinggi player |
playsinline |
Putar inline di iOS |
💡 Tips: Untuk performa optimal, kompres file video sebelum diupload ke server — gunakan tools seperti HandBrake atau FFmpeg. Video yang tidak dikompresi bisa berukuran ratusan MB dan memperlambat loading halaman secara drastis. Target ukuran yang baik adalah di bawah 10MB untuk video pendek dan selalu gunakan format MP4 dengan codec H.264 sebagai pilihan utama. 🚀
Kursus
HTML Dasar
Kategori
Link & Media
Durasi Pelajaran
20 menit