我有一个视频文件,我知道如何使用 ffmpeg 提取片段并设置关键帧以做到这一点。
但是,我想提取一段一定持续时间的片段,比如 1 分钟,然后等待 50 秒,再分割 1 分钟,等待 50 秒,再分割 1 分钟,等等,直到视频文件结束。
我怎样才能做到这一点?
是否可以使用 list.txt 作为剪切输入?
最佳答案
我们称您的分段持续时间为 X
以及一段结束与另一段开始之间的间隔Y
.两者都在几秒钟内。利用
ffmpeg -i in.mp4 -vf select='lt(mod(t,X+Y),X)',setpts=N/FRAME_RATE/TB -force_key_frames expr:gte(t,n_forced*X) -f segment -segment_time X out%d.ts
您可能需要添加
-reset_timestamps 1
每个段的零开始时间戳。音频被忽略,如果存在将不同步。使用 aselect/asetpts
添加相应的音频过滤器同步剪切音频。
关于FFmpeg如何以设定的时间间隔提取精确持续时间的时间片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42938574/