Untuk menggabungkan beberapa file video menjadi satu tanpa encoding ulang (menggunakan metode concat demuxer), caranya sedikit berbeda karena FFmpeg membutuhkan sebuah file teks sebagai daftar antrean videonya.
Metode ini sangat cepat karena hanya "menempelkan" file-file tersebut (stream copy). Berikut adalah langkah-langkahnya:
1. Buat File Daftar Video
Buat sebuah file teks, misalnya bernama list.txt, dan isi dengan format seperti ini:
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'
file 'video5.mp4'
Catatan: Pastikan semua video memiliki resolusi, frame rate, dan codec yang sama agar hasilnya tidak error atau patah-patah.
2. Jalankan Perintah FFmpeg
Gunakan perintah berikut di terminal atau command prompt:
ffmpeg -f concat -safe 0 -i list.txt -c copy satuoutputvideo.mp4
Penjelasan flag:
-f concat: Memberitahu FFmpeg untuk menggunakan mode penggabungan (concatenation).-safe 0: Dibutuhkan agar FFmpeg bisa membaca path file yang ada di dalamlist.txt.-i list.txt: Input berupa file daftar yang tadi dibuat.-c copy: Melakukan stream copy (tanpa encoding ulang), sehingga prosesnya instan.
Tips Cepat (Tanpa Buat File Teks Manual)
Jika kamu pengguna Windows (PowerShell), kamu bisa membuat file list.txt secara otomatis dengan satu baris perintah:
foreach ($i in Get-ChildItem -Filter *.mp4) { "file '$($i.Name)'" | Out-File list.txt -Append -Encoding ascii }
Atau di Linux/Mac (Terminal):
printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4 video5.mp4 > list.txt
Apakah kamu ingin saya bantu buatkan script otomatis agar kamu tinggal klik saja untuk menggabungkannya?
----
Munculnya peringatan (warning) kuning "Non-monotonic DTS" itu sebenarnya sangat umum terjadi saat kita menggabungkan video dengan metode -c copy (tanpa encoding ulang).
Berikut penjelasan sederhananya:
1. Apa Maksud Pesan Itu?
DTS (Decoding Time Stamp) adalah penanda waktu yang memberi tahu pemutar video kapan sebuah frame harus diproses.
Monotonic: Artinya waktu harus selalu maju (1, 2, 3, dst).
Non-monotonic: Artinya waktunya "lompat-lompat" atau mundur (misalnya: 365718 ke 364802).
Ini terjadi karena video-video yang kamu gabungkan mungkin memiliki metadata atau struktur waktu yang sedikit berbeda di bagian awal/akhir file (akibat beda sumber atau beda cara potong). FFmpeg mendeteksi bahwa urutan waktunya tidak mulus saat ditempelkan jadi satu.
2. Kenapa Masih Bisa Dikirim ke WA?
Meskipun ada peringatan tersebut, FFmpeg biasanya tetap berhasil menyelesaikan tugasnya dengan melakukan koreksi otomatis (seperti pesan Auto-inserting h264_mp4toannexb yang terlihat di log kamu).
Selama hasil akhirnya bisa diputar dan tidak ada sinkronisasi audio-video yang lari (suara duluan atau gambar telat), maka file tersebut aman-aman saja. WhatsApp juga punya sistem transcoding sendiri saat kamu mengirim video, jadi WA akan otomatis "merapikan" timestamp tersebut sebelum dikirim ke penerima.
3. Cara Menghilangkannya (Opsional)
Jika kamu merasa terganggu atau video terasa "patah" di titik sambungan, kamu bisa menambahkan flag -fflags +genpts untuk menyuruh FFmpeg membuat ulang penanda waktunya:
ffmpeg -f concat -safe 0 -fflags +genpts -i list.txt -c copy satuoutputvideo.mp4
Kesimpulan: Log itu cuma "curhatan" FFmpeg bahwa data waktunya agak berantakan, tapi dia sudah berusaha memperbaikinya. Selama file bisa ditonton, kamu tidak perlu khawatir.
Mau saya bantu cek apakah ada bagian video yang patah di hasil gabungannya?
