FFmpeg視頻拼接

前言

最近在工作中有這麼一個需求:用一個超大視頻來測試一個視頻服務接口,看結果響應是否超時。但是本地只有一個2GB大小的電影文件,如何快速生成一個10GB大小的視頻文件。

視頻拼接

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源程序。本文就介紹FFmpeg官方推薦的三種視頻拼接方法.

  1. Concat demuxer: 基於demuxer實現的拼接,需要視頻音頻的屬性完全一樣,這種方式不會對視頻音頻流解碼再編碼,因此速度很快,推薦大家使用這種方式。
ffmpeg -f concat -safe 0 -i filelist.txt -c copy yeqiongzhou.mp4
filelist.txt: file 'test1.mp4'
              file 'test1.mp4'
	          file 'test2.mp4'
	          file 'test2.mp4'
通過上面的命令我們就可以通過本地的test1.mp4和test2.mp4這兩個小視頻文件生成一個大視頻文件。
Tips: 如果是相對路徑,則不需要上面的-safe 0。
  1. Concat protocol: 該方式是基於文件來操作的,某些文件(例如MPEG-2 transport streams),這類似於在linux系統上使用cat命令或在Windows上進行復制操作。
ffmpeg -i "concat:test1.mp4|test2.mp4|test3.mp4" -c copy yeqiongzhou.mp4
  1. Concat filter: 這種方式實際上是把所有的視頻音頻全部解碼,統一爲原始的音視頻流,然後塞進編碼器重新編碼。這種方式需要視頻之間的分辨率和幀率必須一致,優點是兼容性好,能夠應付絕大部分場景。
ffmpeg -i test1.mp4 -i test2.webm -i test3.mov \
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" yeqiongzhou.mkv
通過上面的命令我們合併了三個具有視頻流和音頻流的文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章