仅使用 ffmpeg 转换特定的视频和音轨

hbe*_*ouf 45 ffmpeg video-conversion

我有一个vidui.mkv包含 6 首曲目的 MKV 文件 ( )。

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
Run Code Online (Sandbox Code Playgroud)

我想将上述文件转换为带有一个 h264 视频和一个 AC3 音频的 mp4 格式。我还想转换轨道 1(视频)和轨道 5(音频)。

如果我使用

ffmpeg.exe -i vidui.mkv -f mp4 -vcodec libx264 -acodec ac3 -crf 20 -sn -n vidui.mp4
Run Code Online (Sandbox Code Playgroud)

它转换第一个视频轨道和第一个音频轨道,但我希望它做的是转换轨道 1 和轨道 5。

slh*_*hck 67

您可以使用该-map选项完整文档)来选择特定的输入流并将它们映射到您的输出。

map您可以使用的最简单的语法是-map i:s,其中i是输入文件 ID 和s是流 ID,均以0. 在您的情况下,这意味着我们选择 track04

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:0 -map 0:4 vidui.mp4
Run Code Online (Sandbox Code Playgroud)

如果要专门选择视频、音频或字幕轨道,还可以使用流说明符

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:v:0 -map 0:a:1 vidui.mp4
Run Code Online (Sandbox Code Playgroud)

这里,0:v:0是第一个视频流,0:a:1是第二个音频流。