ffmpeg的map參數可以指定輸入流和輸出流的映射關系。
參數格式:
1 | -map [-]input_file_id[:stream_specifier][?][,sync_file_id[:stream_specifier]] | [linklabel] (output) |
input_file_id
指定輸入檔案索引,從0開始,比如0表示第一個輸入檔案,1表示第二個輸入檔案。
stream_specifier
指定對應的檔案中具體的流。可以參考:FFmpeg筆記-Stream specifiers | 木杉的部落格
input_file_id
前面的負号表示從已經建立的map關系中去掉這個映射。
?
問号表示如果對應的流不存在則忽略。否則預設是會報錯提示這個流不存在的。
具體使用得看例子:
映射第一個輸入的所有流到輸出:
ffmpeg -i INPUT -map 0 output
假設輸入檔案中有兩個音頻流,他們可以通過0:0和0:1指定,然後下面的指令選擇第二個音頻到輸出檔案(第一個流忽略):
ffmpeg -i INPUT -map 0:1 out.wav
選擇a.mov的第三個流和b.mov的第七個流輸出到out.mov中:
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
選擇所有的視訊流,和第三個音頻流到輸出檔案:
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
從輸入中剔除第一個音頻流:
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
選擇第一個輸入檔案的視訊和音頻流到輸出,如果不存在音頻流,不報錯:
ffmpeg -i INPUT -map 0:v -map 0:a? OUTPUT
ffmpeg -i INPUT -map 0:m:language:eng OUTPUT
參考資料
- ffmpeg Documentation