Jawaban:
Gunakan -map
opsi untuk memilih aliran Anda. Pilihan aliran default hanya akan memilih satu dari setiap jenis aliran, oleh karena itu -map
harus digunakan.
ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v
- 0
Mengacu pada input pertama yaitu video.mkv
. The v
berarti "pilih streaming video jenis".
0:a:0
- 0
Mengacu pada input pertama yaitu video.mkv
. The a
berarti "memilih jenis stream audio". Yang terakhir 0
mengacu pada aliran audio pertama dari input ini. Jika hanya 0:a
digunakan, maka semua streaming video akan dipetakan.
1:a
- 1
Mengacu pada input kedua yaitu audio.mp3
. The a
berarti "memilih jenis stream audio".
-codec copy
akan melakukan streaming salinan (re-mux) alih-alih menyandikan. Jika Anda memerlukan codec audio tertentu, Anda harus menentukan -c:v copy
(untuk menyimpan video) dan kemudian, misalnya, -c:a libmp3lame
untuk menyandikan ulang aliran audio ke MP3.
-shortest
akan mengakhiri output ketika input terpendek berakhir.
ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amerge
penyaringan digunakan di sini, sehingga audio tidak dapat disalin dalam contoh ini.-codec copy
, tapi saya memperbaikinya (versi ffmpeg berbeda), masalah lain yang saya miliki adalah dengan -map
, ia mengeluhkan jumlah aliran yang salah.
-map 0:v -map 1:a
. Saya berasumsi ini berarti mengambil video dari file pertama (video.mkv) dan kemudian mengambil audio dari file kedua (audio.mp4) untuk membuat output.mkv ... Tidak yakin untuk apa -map 0:a:0
itu. Saya mengecualikannya dan saya mendapatkan hasil yang saya inginkan.