Конвертувати певну відео- та аудіо-доріжку лише за допомогою ffmpeg


26

У мене є файл MKV ( vidui.mkv) з 6 доріжками.

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

Я хочу перетворити вищезазначений файл у формат mp4 з одним відео h264 та одним аудіо AC3. Також я хочу перетворити трек 1 (відео) і трек 5 (аудіо).

Якщо я користуюся

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

він перетворює першу відеодоріжку та першу звукову доріжку, але те, що я хотів би це зробити, це перетворити трек 1 і трек 5.

Відповіді:


43

Ви можете скористатися -mapопцією ( повна документація ) для вибору конкретних вхідних потоків і відображення їх на вихід.

Найпростіший mapсинтаксис, який ви можете використовувати, це те -map i:s, де iідентифікатор вхідного файлу та sідентифікатор потоку, починаючи з обох 0. У вашому випадку це означає, що ми вибираємо трек 0і 4:

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

Якщо ви хочете вибрати треки для відео, аудіо чи субтитрів, ви також можете використовувати специфікатори потоку :

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

Тут 0:v:0знаходиться перший відеопотік і 0:a:1другий аудіопотік.


Чи є спосіб це зробити динамічно? Скажіть, я хочу це зробити лише для аудіозаписів мови X, і ffmpeg підібрати це?
Фредо

@Freedo Так, дивіться документацію. Наприклад-map 0:m:language:eng
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.