ffmpeg: pilih track audio (-map) dengan codec id

0

Bagaimana saya bisa menggunakan -mapsaklar ffmpeg untuk memilih trek audio dengan codec-nya?

Katakanlah ada video.mkv dengan satu aliran video (0) dan tiga trek audio (1, 2, 3).

Trek audio memiliki codec yang berbeda, misalnya DTS, AAC dan AC-3 (dalam urutan apa pun).

Saya ingin menghasilkan file output dengan aliran video -map 0:0dan hanya trek AAC, sesuatu seperti:

ffmpeg -i video.mkv -map 0:0 -map 0:aac -codec copy output_with_aac_audio.mkv

Dalam skenario nyata saya tidak tahu mana yang merupakan trek AAC (1, 2 atau 3).

Azevedo
sumber
1
Saya tidak yakin apakah ada cara untuk memetakan berdasarkan codec, tetapi setidaknya Anda dapat memeriksa indeks dengan ffprobe.
Tom Yan

Jawaban:

2

Seperti yang disebutkan Tom Yan dalam komentarnya, Anda dapat menggunakan ffprobeuntuk mendapatkan indeks aliran:

$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv
stream,1,vorbis
stream,2,aac
stream,3,mp3

Saya anggap Anda menggunakan Linux, jadi menambahkan hanya awkakan memberi Anda indeks aliran aac. Dalam contoh ini hasilnya menunjukkan aliran aac sebagai indeks aliran 2:

$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv | awk -F',' '/aac/ {print $2}'
2

Kemudian gunakan -map 0:2dalam ffmpegperintah Anda .

llogan
sumber
Saya di windows. Karena ffmpeg tidak dapat melakukannya secara langsung (belum) Anda mendapatkan yang terdekat. Terima kasih.
Azevedo