天天看點

ffmpeg 合并 拼接 mp4視訊

今天同僚做字幕識别測試,其中360p的視訊是直接從CNTV網上下載下傳的,一套好好的節目被切成9段、10段,為測試帶來了一點小的麻煩;

是以今天想着用ffmpeg拼接一下這些視訊;

需求如下:

1.mp4 2.mp4 … 封裝成 combine.mp4

我對各種封裝格式還不是很了解,因為之前被坑過,大概知道mp4封裝會在一個地方聲明duration,是以,如果從資料層面直接剪切和拼接mp4肯定是不行的。

而ts不同于mp4,其封裝是一塊資料一塊時間戳,無論怎麼剪切,都不影響ts的正常解碼。

是以,首先需要把mp4格式的檔案轉成ts格式,不過要注意的是,我們要拼接mp4檔案,而不是被轉碼的mp4檔案,一次這裡轉換隻需要改變封裝格式,音頻流和視訊流直接複制就行。轉換方法:

指令行指令:

ffmpeg.exe –i 1.mp4 –vcodec copy –acodec copy –vbsf h264_mp4toannexb1.ts

ffmpeg.exe –i 2.mp4 –vcodec copy –acodec copy –vbsf h264_mp4toannexb2.ts

……

如此之後,就可以開始ts檔案的拼接了。有一個指令copy:

指令行指令:

         copy/b “1.ts”+“2.ts”+…+”n.ts” /y “combine.ts”

         //copy為cmd的指令,/b意思為二進制 /y意思為yes,一般情況下寫不寫無所謂,不過當生成的檔案已經存在時,有了/y就等于直接回答了yes,不再提示是否覆寫,如果沒有/y,則cmd指令會詢問你是否覆寫,這時候你需要輸入y/n;

拼接好之後,再将ts封裝格式轉換回mp4

指令行指令:

ffmpeg.exe –icombine.ts –acodec copy –vcodec copy –absf aac_adtstoasc combine.mp4

至此,大功告成;

參考文章:

1、[轉載]用 FFMPEG 合并 MP4 視訊:http://yonsm.net/mp4merge/

//此文提出的方法行不通,估計是ffmpeg版本不同所導緻的。

2、ffmpeg裁剪合并視訊:http://blog.csdn.net/junhua_peng/article/details/11235267