使用ffmpeg合並視頻文件的三種方法


ffmpeg合並視頻的方法有三種。國內大多數僅介紹了其中之一。於是覺得有必要翻譯一下。其實在ffmpeg的 FAQ文檔中有比較詳細的說明。

  1. 使用concat協議進行視頻文件的合並

    這種方式的適用場景是:視頻容器是MPEG-1, MPEG-2 PS或DV等可以直接進行合並的。換句話說,其實可以直接用cat或者copy之類的命令來對視頻直接進行合並。很多文章介紹了這種方法,但適用性卻沒有提及。這並不是一個通用的方法。典型的命令示例如下:

    ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
  2. 使用concat demuxer進行視頻文件的合並

    這種合並方式的適用場景是:當容器格式不支持文件層次的合並,而又不想(不需要)進行再編碼的操作的時候。這種方式對源視頻同樣有同格式同性質的要求。其詳細語法參見 這里。典型的命令示例如下:

    ffmpeg -f concat -i Cam01.txt -c copy Cam01.mp4

    其中,Cam01.txt 為包含了輸入文件的描述文件。

  3. 使用concat濾鏡(filter)進行視頻文件的合並:

    當需要進行任意程度的重新編解碼時,官方推薦使用的方法即是用concat濾鏡來進行視頻文件的合並處理。詳細說明參見 這里。典型命令示例如下:

    ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
      '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
       concat=n=3:v=1:a=2 [v] [a1] [a2]' \
      -map '[v]' -map '[a1]' -map '[a2]' output.mkv

    這段命令目的是將三段雙語格式的視頻合並至最終的一段視頻(output.mkv)。參數n=3說明待合成的視頻有三段,v=1說明視頻流為一,a=2說明音頻流為二。 -map參數的詳細說明可以從Filtergraph文檔中找到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM