[英]Cut multiple videos and merge with ffmpeg
如何將視頻剪切成多個部分,然后將它們連接在一起以使用 ffmpeg 制作新視頻?
您可以使用 concat 分離器。
#1創建一個文本文件
file video.mp4
inpoint 34.5
outpoint 55.1
file video.mp4
inpoint 111.0
outpoint 155.3
file video.mp4
inpoint 278
outpoint 316.4
inpoint/outpoint 指令以秒為單位指定它們上面列出的文件的切入點和切出點。
#2a創建聯合文件
ffmpeg -f concat -i list.txt combined.mp4
#2b一起疊加
ffmpeg -f concat -i list.txt -i background.mp4 -filter_complex "[0:v]scale=400:400[v1];[1:v][v1]overlay=0:0:shortest=1" -shortest -preset superfast "output.mp4"
帶有 concat 的外部音頻流
ffmpeg -i 12m.mp4 -f concat -i list.txt -vf setpts=(PTS-STARTPTS)/1.1 -af atempo=1.1 -map 1:v -map 0:a -shortest new.mp4
你的問題很安靜一般...
以下示例可能對您有所幫助,但可能無法解決您的具體問題。
該示例適用於三個階段:
創建合成視頻(沒有音頻):
ffmpeg -f lavfi -i testsrc=duration=3:size=160x120:rate=10 -c:v rawvideo -pix_fmt rgb24 testsrc.avi
(創建的視頻未壓縮)。
參考: https : //trac.ffmpeg.org/wiki/FilteringGuide
將視頻分成 3 個部分(創建 3 個視頻文件):
ffmpeg -i testsrc.avi -ss 00:00:00 -c copy -t 00:00:01 sec0.avi ffmpeg -i testsrc.avi -ss 00:00:01 -c copy -t 00:00:01 sec1.avi ffmpeg -i testsrc.avi -ss 00:00:02 -c copy -t 00:00:01 sec2.avi
參考: https : //superuser.com/questions/138331/using-ffmpeg-to-cut-up-video
以相反的順序連接(合並)3 個部分:
ffmpeg -i "concat:sec2.avi|sec1.avi|sec0.avi" -codec copy output.avi
注意:對於 Linux 使用單引號'
參考: 使用 ffmpeg 連接兩個 mp4 文件
對於任何進入這個問題的人,我注意到 Gyan 的答案有一個缺點,即在幀間編解碼器的情況下,inpoints 和 outpoints 是近似的(請參閱文檔)。
以下命令(來自Ilogan 的回答)沒有這個缺點。 它適用於一個或多個輸入。
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 \
-filter_complex \
"[0:v]trim=3.48:5.72,setpts=PTS-STARTPTS[v0]; \
[0:v]trim=6.56:8.68,setpts=PTS-STARTPTS[v0b]; \
[1:v]trim=13.52:15.36,setpts=PTS-STARTPTS[v1]; \
[1:v]trim=17.56:23.32,setpts=PTS-STARTPTS[v1b]; \
[2:v]trim=20.6:23.96,setpts=PTS-STARTPTS[v2]; \
[v0][v0b][v1][v1b][v2]concat=n=5:v=1:a=0[v]" \
-map "[v]" -an -crf 17 output.mp4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.