video - 如何使用 ffmpeg 从视频中提取单个帧?

标签 video ffmpeg video-streaming

我有一堆从 Youtube 下载的视频,我想从中提取帧。我当前使用的命令是:

ffmpeg -i input.mp4 -an -s qvga %06d.png

但我还想设置 -r 和 -t 选项。我希望 fps 是每个视频的 fps,持续时间是它们的持续时间。我知道如果我不设置 -r 选项,默认值为 25 fps。

所以有人可以帮忙吗?如何添加 -r 和 -t 选项?有没有更好更准确的方法从视频中获取单个帧?非常感谢。

最佳答案

输出图片时不需要设置时长(-t)或帧率(-r)。默认情况下,ffmpeg 将输出所有图像。

其他说明:

  • 如果您想限制持续时间,例如只想要前 3 秒的图像,请使用 -t 3

  • 如果你想限制输出帧的数量,比如只想要前 100 帧,那么使用 -frames:v 100

  • 单个图像没有帧速率。如果您添加 -r,那么如果 -r 与输入帧速率不同,ffmpeg 将重复或丢帧。省略 -r 将输出所有图像。

  • 输出图片时不需要-an

  • 使用 scale filter-s 更灵活。它可以防止拉伸(stretch),因为它可以保持纵横比:-vf scale=320:-1

关于video - 如何使用 ffmpeg 从视频中提取单个帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701212/

相关文章:

video - 在特定时间使用 FFMpeg drawtext 添加文本

c++ - FFmpeg 中是否有源文件的字节偏移量?

video - 将 webm 视频拆分为透明的 png

python - 如何设置时间间隔以从输入视频中获取帧?

javascript - 如何保持实时 MediaSource 视频流同步?

ios - 从 iPhone 6/6+ 上的相机胶卷视频导出时没有慢动作效果

video - 使用ffmpeg获取视频帧信息

Android:收到电话时自动录制视频并将生成的电影文件发送到电子邮件地址

bash - FFmpeg:将段传送到 s3

node.js - 将 Canvas 上播放的视频发送到 websocket