今天同事做字幕識別測試,其中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