Konversi video dan audio khusus hanya dengan ffmpeg

18

Saya punya file MKV ( vidui.mkv ) dengan 6 lagu di dalamnya.

Track 1 - video - xvid - 1920x1080
Track 2 - video - xvid - 720x576
Track 3 - audio -  AAC - 1240kbps - English
Track 4 - audio -  AAC - 648kbps - Spanish
Track 5 - audio -  AAC - 648kbps - Commentary 1
Track 6 - audio -  AAC - 648kbps - Commentary 2

Saya ingin mengonversi file di atas ke format mp4 dengan satu video h264 dan satu audio AC3. Saya juga ingin mengonversi trek 1 (video) dan trek 5 (audio).

Jika saya gunakan

ffmpeg.exe -i vidui.mkv -f mp4 -vcodec libx264 -acodec ac3 -crf 20 -sn -n vidui.mp4

itu mengkonversi trek video pertama dan trek audio pertama, tetapi apa yang ingin saya lakukan adalah mengkonversi trek 1 dan trek 5.

hbelouf
sumber

Jawaban:

32

Anda dapat menggunakan -map pilihan ( dokumentasi lengkap ) untuk memilih aliran input spesifik dan memetakannya ke output Anda.

Yang paling sederhana map sintaks yang dapat Anda gunakan adalah -map i:sdimana i adalah ID file input dan s adalah ID aliran, keduanya dimulai dengan 0. Dalam kasus Anda, itu artinya kami memilih trek 0 dan 4:

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:0 -map 0:4 vidui.mp4

Jika Anda ingin memilih trek video, audio atau subtitle secara spesifik, Anda juga dapat menggunakan penspesifikasi aliran :

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:v:0 -map 0:a:1 vidui.mp4

Sini, 0:v:0 adalah aliran video pertama dan 0:a:1 adalah aliran audio kedua.

slhck
sumber
Apakah ada cara untuk melakukan ini secara dinamis? Katakanlah saya ingin melakukan ini hanya untuk trek audio bahasa X, dan apakah ffmpeg mengambilnya?
Freedo
@Freedo Ya, silakan lihat dokumentasinya. Sebagai contoh -map 0:m:language:eng
slhck