Converti traccia audio e video specifica solo con ffmpeg


26

Ho un file MKV ( vidui.mkv) con 6 tracce.

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

Voglio convertire il file sopra in un formato mp4 con un video h264 e un audio AC3. Inoltre voglio convertire la traccia 1 (video) e la traccia 5 (audio).

Se io uso

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

converte la prima traccia video e la prima traccia audio, ma ciò che mi piacerebbe fare è convertire la traccia 1 e la traccia 5.

Risposte:


43

È possibile utilizzare l' -mapopzione ( documentazione completa ) per selezionare flussi di input specifici e mapparli sull'output.

La mapsintassi più semplice che puoi usare è -map i:s, dove si itrova l'ID del file di input e sl'ID del flusso, entrambi a partire da 0. Nel tuo caso, ciò significa che selezioniamo traccia 0e 4:

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

Se si desidera scegliere specificamente tracce video, audio o di sottotitoli, è anche possibile utilizzare gli identificatori di flusso :

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

Ecco, 0:v:0è il primo flusso video ed 0:a:1è il secondo flusso audio.


C'è un modo per farlo in modo dinamico? Supponiamo che lo voglia fare solo per le tracce audio del linguaggio X e che ffmpeg lo raccolga?
Freedo,

@Freedo Sì, consultare la documentazione. Ad esempio-map 0:m:language:eng
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.