使用 ffmpeg 进行帧精确视频剪切

使用 ffmpeg 进行帧精确视频剪切

我想使用 ffmpeg 在某个精确的帧处剪切视频文件。

让我们来这个视频。首先,我得到一个 25 秒的帧:

ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -vframes 1 25.png

请注意,我使用后缀-ss选项,因此搜索必须精确到帧。这是我的图像:

在此处输入图片描述

然后我使用流复制将视频剪切到 25 秒处并检查其第一帧:

ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -c copy cut.mp4
ffmpeg -i cut.mp4 -vframes 1 0.png

第一帧有所不同:

在此处输入图片描述

但是如果我用其他格式或视频编解码器替换流复制选项,则第一帧是正确的:

ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -f avi cut.avi
ffmpeg -i cut.avi -vframes 1 0_1.png

在此处输入图片描述

是否有可能通过流复制模式实现帧精确搜索?

在我的应用程序中,用户应该能够选择一个帧并启动一个过程,该过程将精确地在该帧处剪切视频。在这种情况下,我不需要任何视频转换,但同时我无法使流复制模式精确到帧。

相关内容