我做了类似于这样的事情。
ffmpeg -i video1.mp4 -ss 00:01:00 -to 00:03:00 -i video2.mp4 -ss 00:05:00 -to 00:02:00 -c copy cut.mp4
显然复用没有发生。
我该如何使它工作?
ffmpeg -i video1.mp4 -ss 00:01:00 -to 00:03:00 -i video2.mp4 -ss 00:05:00 -to 00:02:00 -c copy cut.mp4
显然复用没有发生。
我该如何使它工作?
您需要告诉ffmpeg
您想要连接每个视频和音频流:
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex
"[0:v]trim=start=60:end=180,setpts=PTS-STARTPTS[v0];
[0:a]atrim=start=60:end=180,asetpts=PTS-STARTPTS[a0];
[1:v]trim=start=300:end=420,setpts=PTS-STARTPTS[v1];
[1:a]atrim=start=300:end=420,asetpts=PTS-STARTPTS[a1];
[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]"
-map "[v]" -map "[a]" output.mp4
(a)trim
创建每个片段,(a)setpts
重置片段时间戳(建议用于 concat
),concat
连接每个片段。有关每个过滤器的文档,请参见FFmpeg Filters。
我将命令分成多行以便阅读。请重新组合为单行或添加适合您环境的换行符。
这将重新编码视频,但切割将非常准确。如果要避免重新编码,请参见concat demuxer,但切割可能不准确,结果可能不令人满意。
-to
值不能小于 -ss
值,因此我假设您的意思是 -ss 00:05:00 -to 00:07:00
而不是 -ss 00:05:00 -to 00:02:00
。