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).


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 .


Saya di windows. Karena ffmpeg tidak dapat melakukannya secara langsung (belum) Anda mendapatkan yang terdekat. Terima kasih.
Azevedo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.