使用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从视频中提取最终帧的主要内容,如果未能解决你的问题,请参考以下文章