天天看點

ffmpeg拼接視訊

作者:音視訊流媒體技術

1、兩段視訊先後播放拼接

我沒有直接安裝ffmpeg,因為好多軟體裡都已經自帶了

ffmpeg拼接視訊

想拼接視訊的話,找兩個視訊檔案,随便放在一個目錄

ffmpeg拼接視訊

videolist.txt中寫入待拼接的視訊檔案相對路徑

file 'lzbffmpeg/03.mp4'
file 'lzbffmpeg/21.mp4'           

然後就可以拼接了

ffmpeg拼接視訊
ffmpeg.exe -f concat -i lzbffmpeg\videos.txt joinoutput.mp4           

joinooutput.mp4是輸出名

ffmpeg拼接視訊

ok了

ffmpeg拼接視訊

當然,還有其他不少的拼接方法,這隻是其中的一種。

相關學習資料推薦,點選下方連結免費報名,先碼住不迷路~】

【免費分享】音視訊學習資料包、大廠面試題、技術視訊和學習路線圖,資料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點選加群免費領取~

ffmpeg拼接視訊

2、兩段視訊同時播放,左右或上下同時顯示

有的小可愛要的可能不是時間線上的拼接,而是類似分屏顯示的那種,安排

ffmpeg -i lzbffmpeg\03.mp4 -i lzbffmpeg\21.mp4 -filter_complex "pad=4000:1080:color=red[x0];[0:v]scale=w=1920:h=1080[inn0];[x0][inn0]overlay=0:0[x1];[1:v]scale=w=1920:h=1080[inn1];[x1][inn1]overlay=2000:0" out14.mp4           

指令詳解

ffmpeg 
-i lzbffmpeg\03.mp4 			//視訊1
-i lzbffmpeg\21.mp4 			//視訊2
-filter_complex 
"pad=3840:1080[x0];				//合并後的總尺寸
[0:v]scale=w=1920:h=1080[inn0];	//第一個視訊的尺寸
[x0][inn0]overlay=0:0[x1];		//第一個視訊左上角的起始坐标
[1:v]scale=w=1920:h=1080[inn1];	//第二個視訊的尺寸
[x1][inn1]overlay=1920:0" 		//第二個視訊左上角的起始坐标
out12.mp4						//輸出檔案名           
ffmpeg拼接視訊
ffmpeg拼接視訊

假如我想讓左右兩個視訊中間有個分界,留點空隙,就100個像素吧,顔色為綠色

ffmpeg拼接視訊
ffmpeg拼接視訊

指令修改為

ffmpeg -i lzbffmpeg\03.mp4 -i lzbffmpeg\21.mp4 -filter_complex "pad=3940:1080:color=green[x0];[0:v]scale=w=1920:h=1080[inn0];[x0][inn0]overlay=0:0[x1];[1:v]scale=w=1920:h=1080[inn1];[x1][inn1]overlay=2020:0" out15.mp4           
ffmpeg 
-i lzbffmpeg\03.mp4 			//視訊1
-i lzbffmpeg\21.mp4 			//視訊2
-filter_complex 
"pad=3940:1080[x0];				//合并後的總尺寸【寬度要加100】
[0:v]scale=w=1920:h=1080[inn0];	//第一個視訊的尺寸
[x0][inn0]overlay=0:0[x1];		//第一個視訊左上角的起始坐标
[1:v]scale=w=1920:h=1080[inn1];	//第二個視訊的尺寸
[x1][inn1]overlay=1920:0" 		//第二個視訊左上角的起始坐标【第二個視訊起始位置的坐标要加100】
out12.mp4						//輸出檔案名           

假如想讓兩個視訊上下顯示,比如這樣

ffmpeg拼接視訊
ffmpeg拼接視訊
ffmpeg -i lzbffmpeg\03.mp4 -i lzbffmpeg\21.mp4 -filter_complex "pad=1920:2160:color=green[x0];[0:v]scale=w=1920:h=1080[inn0];[x0][inn0]overlay=0:0[x1];[1:v]scale=w=1920:h=1080[inn1];[x1][inn1]overlay=0:1080" out16.mp4           
ffmpeg 
-i lzbffmpeg\03.mp4 			//視訊1
-i lzbffmpeg\21.mp4 			//視訊2
-filter_complex 
"pad=1920:2160[x0];				//合并後的總尺寸【總尺寸變化了】
[0:v]scale=w=1920:h=1080[inn0];	//第一個視訊的尺寸
[x0][inn0]overlay=0:0[x1];		//第一個視訊左上角的起始坐标【這個沒有變】
[1:v]scale=w=1920:h=1080[inn1];	//第二個視訊的尺寸
[x1][inn1]overlay=0:1080" 		//第二個視訊左上角的起始坐标【這個需要修改】
out12.mp4						//輸出檔案名           

ffmpeg這單個指令功能看着挺簡單,但是一組合就可以變化萬千,實作各種各樣的功能。

原文 ffmpeg拼接視訊_六月的翅膀的部落格-CSDN部落格