我该如何使用ffmpeg将视频剪切成多个部分,然后将它们合并为一个新视频?
#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
Create synthetic video (with no audio):
ffmpeg -f lavfi -i testsrc=duration=3:size=160x120:rate=10 -c:v rawvideo -pix_fmt rgb24 testsrc.avi
(The created video is uncompressed).
Reference: https://trac.ffmpeg.org/wiki/FilteringGuide
Cut video into 3 parts (creating 3 video files):
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
Reference: https://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video
Concatenate (merge) 3 parts in reverse order:
ffmpeg -i "concat:sec2.avi|sec1.avi|sec0.avi" -codec copy output.avi
Note: for Linux use single quotes '
Reference: Concatenate two mp4 files using ffmpeg
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
Mar 14 '17 at 5:28
的评论。如果你要保存为FLV,请添加-c:v libx264
。如果已经选择了该编码器,请添加-crf 18
。 - Gyan