我想用 FFmpeg 每分钟剪辑一段时长为 2 秒的视频m
,其中
m = video_length / 5
例如,我有一个 10 分钟长的视频。该视频片段总长度为 10 秒(5 个片段,每个片段 2 秒),由以下视频时间戳范围组成:
00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02
这将产生一种视频预告片。
我知道我可以通过片段实现这一点,但却无法弄清楚整个过程。
答案1
您可以使用选择过滤器一次性完成此操作
ffmpeg -i in.mp4
-vf select='lt(mod(t,120),2)',setpts=N/FRAME_RATE/TB
-af aselect='lt(mod(t,120),2)',asetpts=N/SR/TB
out.mp4
答案2
我知道一种方法,你可以可能使用。不过,这有点混乱。
使用以下命令提取剪辑:
ffmpeg -i -ss <time to start> -t <duration> <output clip filename>
你要做的是提取具有以下格式的剪辑,其中-ss
是剪辑的开始,-t
是剪辑的持续时间。提取完这些后,你可以将它们连接在一起:
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
请注意,这种连接形式并不适用于所有视频格式,您可能需要添加一些其他参数,例如-bsf:a aac_adtstoasc
MP4 文件。但这应该可以让您获得所需的视频。