
Mengapa M3U8 Perlu "Dikonversi" dan Bukan Langsung Disimpan Sebagai File?
Saat Anda memutar sebuah stream M3U8, di balik layar browser sebenarnya terus-menerus meminta paket data .ts satu demi satu, lalu mendekodenya secara real-time untuk diputar. Fragmen-fragmen ini:
- Berformat MPEG-2 Transport Stream (.ts)
- Biasanya berukuran durasi video 2-10 detik
- Tidak dapat diputar secara langsung dengan kebanyakan pemutar (format tidak didukung secara luas sebagai file tunggal)
Untuk mendapatkan video yang dapat diputar di perangkat mana pun, Anda perlu:
- Mengunduh semua fragmen
.ts - Menggabungkannya sesuai urutan
- Mengemas ulang (remux) ke dalam wadah (container)
.mp4(Opsional: mengodekan ulang untuk mengubah format encoding)
Struktur Dua Lapis M3U8
Sebelum mulai mengunduh, Anda harus memahami bahwa M3U8 bisa memiliki dua lapisan:
Master Playlist (Daftar Putar Utama)
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1280x720
720p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=854x480
480p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=700000,RESOLUTION=640x360
360p/index.m3u8
File ini sendiri tidak berisi fragmen, hanya mencantumkan jalur (path) Media Playlist untuk berbagai kualitas gambar.
Media Playlist (Daftar Putar Media)
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:3
#EXTINF:6.006,
segment-001.ts
#EXTINF:6.006,
segment-002.ts
...
#EXT-X-ENDLIST
Inilah daftar yang sebenarnya berisi jalur menuju fragmen-fragmen .ts.
Penjelasan Metode Konversi
Metode 1: FFmpeg -c copy (Pengemasan ulang langsung, paling cepat)
ffmpeg -i "https://stream.example.com/720p/index.m3u8" \
-c copy \
-movflags +faststart \
output.mp4
Penjelasan:
- -c copy: Tidak mengodekan ulang (re-encode), langsung mengambil data H.264 + AAC dari TS dan mengemasnya ulang ke dalam wadah MP4.
- -movflags +faststart: Memindahkan moov atom ke awal file, sehingga MP4 mendukung pemutaran sambil mengunduh (ramah streaming).
- Kecepatan sangat tinggi, hampir tidak mengonsumsi resource CPU, ukuran output hampir sama dengan aslinya.
Metode 2: FFmpeg Pengodean Ulang (Mengurangi ukuran file)
ffmpeg -i "https://stream.example.com/720p/index.m3u8" \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -b:a 128k \
output.mp4
Penjelasan:
- Cocok jika Anda perlu mengompres video yang awalnya memiliki bitrate tinggi.
- Nilai CRF yang lebih rendah berarti kualitas lebih baik namun file lebih besar (disarankan 18-28).
- Kecepatan jauh lebih lambat dibanding -c copy, karena memerlukan CPU untuk mengodekan ulang.
Metode 3: FFmpeg.wasm di Browser (Tanpa instalasi)
Alat Riset HLS di situs ini menggunakan FFmpeg.wasm untuk menyelesaikan penggabungan di dalam browser, yang setara dengan menjalankan perintah berikut di browser Anda:
ffmpeg -f concat -safe 0 -i concat.txt -c copy output.mp4
Skenario penggunaan: Saat Anda perlu menggabungkan sedikit tautan publik secara mendadak dan tidak ingin menginstal perangkat lunak apa pun.
Perbandingan Alat Konversi
| Alat | Persyaratan Instalasi | Kecepatan | Batasan CORS | Target Pengguna |
|---|---|---|---|---|
| Baris Perintah FFmpeg | Perlu instalasi | ★★★★★ | Bisa dilewati | Pengembang, Pengguna Teknis |
| Pemutar VLC | Perlu instalasi | ★★★ | Bisa dilewati | Pengguna Umum |
| Alat Browser (Situs ini) | Tanpa instalasi | ★★★ | Terbatas | Pengujian Cepat |
| Situs Konversi Online | Tanpa instalasi | ★★ | Tergantung Server | Pengguna Non-Teknis |
Masalah Umum
Video tidak ada suara setelah konversi?
Biasanya karena trek audio berformat AC-3 (Dolby), yang tidak didukung oleh beberapa pemutar MP4. Solusi:
ffmpeg -i input.m3u8 -c:v copy -c:a aac output.mp4
Memaksa konversi audio ke format AAC biasanya akan menyelesaikan masalah ini.
Video tidak sinkron (Suara dan gambar tidak pas)?
Jika suara dan gambar tidak sinkron, biasanya karena timestamp PTS/DTS pada fragmen TS mengalami lompatan. Gunakan -async 1 atau -fflags +genpts untuk membuat ulang timestamp:
ffmpeg -fflags +genpts -i input.m3u8 -c copy output.mp4
Bagaimana jika M3U8 dienkripsi?
Jika di dalam M3U8 terdapat #EXT-X-KEY:METHOD=AES-128,URI=..., itu berarti fragmen dienkripsi. FFmpeg dapat menangani AES-128 secara otomatis, namun DRM (seperti Widevine, FairPlay) adalah perlindungan tingkat hardware yang saat ini tidak dapat ditangani oleh alat publik.
Detail lebih lanjut mengenai enkripsi: Analisis Lengkap Enkripsi M3U8 dan DRM
Sumber Daya Terkait
Ingin menguji tautan M3U8 Anda sekarang?
🚀 Uji Pemutar M3U8 Online Sekarang