web-dev-qa-db-fra.com

Convertir une piste vidéo et audio spécifique uniquement avec ffmpeg

J'ai un fichier MKV (vidui.mkv) avec 6 pistes.

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

Je veux convertir le fichier ci-dessus en un format MP4 avec une vidéo h264 et un audio AC3. Aussi, je veux convertir la piste 1 (vidéo) et la piste 5 (audio).

Si j'utilise

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

il convertit la première piste vidéo et la première piste audio, mais ce que je voudrais, c’est convertir les pistes 1 et 5.

20
hbelouf

Vous pouvez utiliser l'option -map ( documentation complète ) pour sélectionner une entrée spécifique. flux et les mapper à votre sortie.

La syntaxe map la plus simple que vous puissiez utiliser est -map i:s, où i est l'ID du fichier d'entrée et s est l'ID du flux, les deux commençant par 0. Dans votre cas, cela signifie que nous sélectionnons les pistes 0 et 4:

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

Si vous souhaitez choisir spécifiquement des pistes vidéo, audio ou de sous-titres, vous pouvez également utiliser des spécificateurs de flux :

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

Ici, 0:v:0 est le premier flux vidéo et 0:a:1 est le deuxième flux audio.

38
slhck