題 僅使用ffmpeg轉換特定的視頻和音頻軌道


我有一個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。


17
2017-09-01 04:38


起源




答案:


你可以使用 -map 選項 (完整的文檔)選擇特定的輸入流並將它們映射到您的輸出。

最簡單的 map 你可以使用的語法是 -map i:s,哪裡 i 是輸入文件ID和 s 是流ID,都是以。開頭的 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 是第二個音頻流。


30
2017-09-01 07:40



有沒有辦法動態地這樣做?假設我只想對語言X的音軌進行此操作,並讓ffmpeg選擇這個嗎? - Freedo
@Freedo是的,請參閱文檔。例如 -map 0:m:language:eng - slhck