Tidak Ada Suara Setelah Konversi M3U8 ke MP4? Analisis Penyebab dan Metode Perbaikan Lengkap

Anda telah menunggu beberapa menit untuk menggabungkan stream M3U8 menjadi file MP4, namun saat dibuka—gambarnya sempurna tetapi sama sekali tidak ada suara. Ini adalah salah satu masalah paling umum dalam proses konversi M3U8, dan penyebabnya biasanya bukan pada pengoperasian Anda, melainkan kompatibilitas dari "format encoding audio".

Perbaikan M3U8 ke MP4 tidak ada suara


Mengapa Tidak Ada Suara Setelah Konversi?

Penyebab 1: Format encoding audio tidak kompatibel (Paling sering terjadi)

Encoding audio dalam fragmen .ts pada streaming HLS tidak selalu berupa format AAC yang kita kenal. "Format bermasalah" yang umum meliputi:

Encoding Audio Penjelasan Sering Ditemukan di Kompatibilitas MP4
AAC-LC AAC Standar Kebanyakan streaming ✅ Kompatibel penuh
HE-AAC v2 AAC Efisiensi Tinggi Streaming bit rate rendah ⚠️ Beberapa player tidak mendukung
AC-3 (Dolby) Efek suara Dolby Film, streaming kualitas tinggi ❌ Kebanyakan player MP4 tidak mendukung
EAC-3 (Dolby Digital Plus) Dolby Tingkat Lanjut Platform video ❌ Kebanyakan tidak mendukung
MP3 (MPEG-1 Layer 3) Encoding gaya lama Streaming lama ⚠️ Pengemasan (encapsulation) mungkin bermasalah

Saat Anda menggunakan perintah ffmpeg -c copy (langsung menyalin tanpa transcoding ulang), FFmpeg akan memasukkan audio apa adanya ke dalam wadah (container) MP4. Jika audio aslinya adalah AC-3 atau EAC-3, banyak pemutar (terutama pemutar bawaan ponsel) akan menjadi "bisu"—bukan berarti tidak ada trek audio, melainkan pemutar tersebut tidak dapat mendekodenya.

Penyebab 2: Fragmen TS memang tidak memiliki trek audio

Beberapa streaming HLS memisahkan video dan audio menjadi aliran yang berbeda (terutama untuk konten multibahasa). Dalam kondisi ini:

  • M3U8 video hanya berisi fragmen video.
  • Audio memiliki M3U8 terpisah yang berdiri sendiri.
  • Jika hanya mengunduh M3U8 video, maka secara otomatis tidak akan ada suara.

Penyebab 3: Timestamp audio dan video tidak sinkron

Terkadang trek audio sebenarnya ada, tetapi karena timestamp PTS/DTS pada fragmen TS mengalami lompatan, audio "tergeser" ke posisi yang aneh setelah penggabungan. Pemutar mungkin salah mengira bahwa "tidak ada audio".

Penyebab 4: Trek audio hilang selama proses penggabungan

Jika ID aliran audio pada fragmen TS tidak konsisten (misalnya beberapa fragmen adalah stream 0, yang lain adalah stream 1), -c copy mungkin hanya menangkap video dan melewatkan audio saat penggabungan.


Metode Perbaikan FFmpeg (Sesuai dengan Masalahnya)

Metode Perbaikan 1: Memaksa transcoding audio ke AAC (Solusi paling umum)

ffmpeg -i input.m3u8 -c:v copy -c:a aac -b:a 192k output.mp4

Penjelasan: - -c:v copy: Video tidak diubah, langsung disalin (cepat). - -c:a aac: Memaksa audio untuk dikodekan ulang (transcode) ke format AAC. - -b:a 192k: Bit rate audio disetel ke 192kbps (kualitas bagus dan file tidak terlalu besar).

Ini adalah metode perbaikan universal yang paling direkomendasikan. Apa pun format audio aslinya (AC-3, EAC-3, dll.), setelah dikodekan ulang ke AAC, hampir semua perangkat akan dapat memutarnya.

Metode Perbaikan 2: Memperbaiki masalah timestamp

ffmpeg -fflags +genpts -i input.m3u8 -c:v copy -c:a aac output.mp4

Penjelasan: - -fflags +genpts: Membuat ulang semua timestamp untuk memperbaiki masalah lompatan PTS/DTS. - Cocok untuk masalah suara yang muncul sesekali atau "suara ada tapi putus-putus".

Metode Perbaikan 3: Menentukan aliran audio secara spesifik

ffmpeg -i input.m3u8 -map 0:v:0 -map 0:a:0 -c:v copy -c:a aac output.mp4

Penjelasan: - -map 0:v:0: Memilih aliran video pertama secara eksplisit. - -map 0:a:0: Memilih aliran audio pertama secara eksplisit. - Mencegah FFmpeg melewatkan trek audio saat memilih aliran secara otomatis.

Metode Perbaikan 4: Menggabungkan aliran audio yang terpisah

Jika video dan audio berada dalam M3U8 yang berbeda:

ffmpeg -i video.m3u8 -i audio.m3u8 \
       -c:v copy -c:a aac \
       -map 0:v:0 -map 1:a:0 \
       output.mp4

Penjelasan: - -i pertama adalah aliran video. - -i kedua adalah aliran audio. - -map menentukan video diambil dari input pertama, dan audio diambil dari input kedua.


Bagaimana Cara Mengetahui Apa Format Audio M3U8 Anda?

Sebelum melakukan perbaikan, akan lebih efisien jika Anda memastikan sumber masalahnya terlebih dahulu menggunakan fitur probe dari FFmpeg:

ffprobe -i "https://example.com/stream.m3u8" -show_streams

Perhatikan bagian berikut:

codec_name=ac3        ← Inilah masalahnya! Seharusnya dikonversi ke aac
codec_type=audio
sample_rate=48000
channels=6            ← 6 channel suara juga bisa menyebabkan masalah

Jika codec_name bukan aac, atau channels lebih dari 2 (stereo), kemungkinan besar itulah penyebab tidak adanya suara.


Cara Penanganan di Alat Sisi Browser

Saat menggunakan alat FFmpeg.wasm di browser, penggabungan biasanya menggunakan -c copy untuk penyalinan langsung. Ini berarti:

  • Jika audio asli adalah AAC → Suara normal ✅
  • Jika audio asli adalah AC-3 → Mungkin tidak ada suara ⚠️

Karena pengodean ulang di sisi browser akan meningkatkan waktu pemrosesan dan konsumsi memori secara signifikan, saat ini kebanyakan alat browser belum mendukung transcoding audio.

Jika Anda menggunakan Alat Unduh HLS di situs ini dan mendapati file MP4 hasil unduhan tidak bersuara, disarankan untuk melakukan transcoding ulang audio pada file MP4 tersebut menggunakan FFmpeg versi desktop:

ffmpeg -i downloaded.mp4 -c:v copy -c:a aac -b:a 192k fixed.mp4

Operasi ini hanya mengodekan ulang bagian audio, sehingga biasanya selesai dalam hitungan detik.


Mencegah Lebih Baik daripada Mengobati: Daftar Periksa Sebelum Mengunduh

  1. Tes dengan Pemutar Terlebih Dahulu: Pastikan video bersuara di Pemutar Online M3U8Go.
  2. Periksa Format Audio: Gunakan ffprobe untuk memastikan encoding audio.
  3. Prioritaskan Menggunakan -c:a aac: Langsung transcode audio saat mengunduh untuk menghindari perbaikan nantinya.
  4. Perhatikan Streaming Multibahasa: Pastikan apakah terdapat M3U8 audio yang terpisah secara independen.

FAQ (Tanya Jawab Umum)

Mengapa saat diputar dengan VLC ada suaranya, tetapi di ponsel tidak ada?

Karena VLC memiliki hampir semua dekoder audio bawaan (termasuk AC-3, EAC-3), sementara pemutar bawaan ponsel biasanya hanya mendukung AAC. Solusinya adalah mengonversi audio ke format AAC.

Apa perbedaan antara -c copy dan -c:a aac?

-c copy menyalin data asli secara langsung, sangat cepat tetapi tidak mengubah format. -c:a aac mengodekan ulang audio ke format AAC, membutuhkan kalkulasi CPU tetapi memiliki kompatibilitas terbaik. Untuk bagian video, disarankan tetap menggunakan -c:v copy agar tidak dikodekan ulang.

Apakah kualitas suara akan menurun setelah transcoding?

Dengan menggunakan bit rate audio -b:a 192k ke atas, secara pendengaran biasanya hampir tidak ada perbedaan kualitas. Jika Anda memiliki persyaratan kualitas suara yang sangat tinggi, Anda dapat meningkatkannya menjadi -b:a 320k.

Ingin menguji tautan M3U8 Anda sekarang?

🚀 Uji Pemutar M3U8 Online Sekarang