使用ffmpeg从视频中提取最终帧

Posted

技术标签:

【中文标题】使用ffmpeg从视频中提取最终帧【英文标题】:Extract final frame from a video using ffmpeg 【发布时间】:2022-01-03 07:55:11 【问题描述】:

我知道如何使用提取第一帧

ffmpeg -ss 00:00:00 -i input.mp4 -vframes 1 -q:v 31 output.png

这里,-ss 选项需要知道提取帧的确切时间。

我想在不知道视频的确切最终时间的情况下获得任何 .mp4 的最后一帧。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

使用

ffmpeg -sseof -3 -i file -vsync 0 -q:v 31 -update true out.jpg

-sseof 从末尾开始搜索 - 我使用了 3 的值来说明具有较长音频流的文件。 -update 是一个 image2 复用器选项,它告诉 ffmpeg 覆盖输出文件。所以最后一次覆盖输出的时间是处理最后一帧的时候。

【讨论】:

这行得通。虽然它可能会有点慢,因为它需要处理整个视频...... 不,它不会处理整个视频,只要您的输入是存储在本地磁盘上的 MP4/MKV。 但我知道-update 需要传递视频的每一帧,这就是为什么你需要使用-vsync 0。对不起,如果我用错了process这个词。 -update 将写入它接收到的每一帧。 -sseof -3 表示它只会接收视频最后 3 秒的帧。

以上是关于使用ffmpeg从视频中提取最终帧的主要内容,如果未能解决你的问题,请参考以下文章

使用ffmpeg从视频文件中提取音频文件视频抽帧和切割视频

ffmpeg实现视频I帧提取

使用ffmpeg提取帧的最快方法?

ffmpeg对视频进行帧序列提取要怎样改变它的输出位置?

前端视频帧提取 ffmpeg + Webassembly

从视频中提取帧的最快方法