FFmpeg如何以设定的时间间隔提取精确持续时间的时间片段?

标签 ffmpeg

我有一个视频文件,我知道如何使用 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/

相关文章:

c++ - 在 Linux 上使用 FFmpeg 从 OpenCV 3 编写 x264

用于 ffmpeg 转换的 bash 脚本不循环

c - FFmpeg C API 文档/教程

c - c语言.exe文件命令的使用

C++ FFmpeg 刷新后如何继续编码?

ffmpeg - 在这种情况下,ffmpeg 的正确命令行格式是什么

c++ - 如何从 GL_RGB 转换为 AVFrame

python - 找不到真正的 FFmpeg 安装(ffprobe 自带)

android - 为 android 构建 ffmpeg 时出错

ffmpeg - ARM 上钴的哪个ffmpeg版本?