天天看點

ffmpeg的map參數

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​​