如何每N秒提取视频一帧为图像?

如何每N秒提取视频一帧为图像?

如何将视频文件转换为图像序列,例如每 N 秒一帧。mplayer 或 ffmpeg 可以做到这一点吗?我曾使用 MPlayer 手动截取屏幕截图,但我想自动执行此操作以处理长视频。

答案1

使用 ffmpeg 非常简单,而且每N秒输出一帧没有额外的脚本。要导出为图像序列,只需使用myimage_%04d.png或类似作为输出。%0xd位转换为零填充的整数x数字长 - 我给出的示例输出为

  • myimage_0000.png

  • myimage_0001.png

  • myimage_0002.png

    ETC..

您可以使用多种静态图像格式,png、jpeg、tga 等等(请参阅ffmpeg -formats完整列表)。

好的,现在我们知道如何将电影导出为一系列图像,但是我们不想导出每一帧?

诀窍是使用选项简单地将输出的帧速率更改为我们想要的任何值,-r n其中n表示每秒的帧数。每秒 1 帧为-r 1,每四秒 1 帧为-r 0.25,每十秒 1 帧为,-r 0.1等等。

总而言之,input.mov每四秒保存一帧到output_0000.png等的方式如下output_0001.png

ffmpeg -i input.mov -r 0.25 output_%04d.png

请注意,-r 0.25选项-i input.mov因为它控制着输出.如果你把它输入它将把输入文件视为具有指定的帧速率。

将 %xd 更改为您需要的任意数字,例如,如果命令将创建超过 10,000 帧,则将 更改为%04d%05d这也适用于输入文件为图像序列。阅读更多这里

Windows 用户:在命令行上使用%

例子:ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png

在 CMD 和 BAT 脚本中使用%%

例子:ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png

%%因此,在脚本中应使用 double ,而%在交互式命令行中应使用 single。在任何一种情况下,如果操作错误,都会导致错误。

编辑值得一看的是下面评论中关于文件类型的讨论。每种类型都有优点和缺点:

  • JPEG格式很多文件较小,有损,仅 8 位颜色,无 alpha。
  • png 无损,文件大,速度慢。8 位颜色支持 alpha。
  • tiff 无损,甚至更大的文件,速度快,支持最多 16 种颜色和 alpha。

要指定文件格式,只需在输出文件中使用所需的扩展名,例如myimage_%04d.jpgmyimage_%04d.pngmyimage_%04d.tiff

答案2

mplayer -vo jpeg -sstep 5 file.avi

每 5 秒将保存一帧为 jpeg 文件。

但是,它不会在文件末尾停止,它会继续生成最后一帧的副本。为了避免这种情况,请使用其他播放器或 mplayer 查找视频的时长(以秒为单位):

mplayer -vo null -ao null -frames 0 -identify file.avi

并查找类似“ID_LENGTH=147.00”的行。

从长度中减去 2,并将此值用作选项-endpos。例如,对于 147 秒的视频:

mplayer -vo jpeg -sstep 5 -endpos 145 file.avi

答案3

ffmpeg,您可以执行以下操作:

ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg

此命令在视频的第 4 秒生成 320×240 大小的 JPG 缩略图。将其放入更改时间和文件名的脚本中即可完成。

更多信息:每隔 X 秒创建一个视频缩略图

答案4

使用 VLC 1.1.0 及以上版本,您可以使用场景视频滤镜:

vlc C:\video\to\process.mp4 --rate=1 --video-filter=scene --vout=dummy --start-time=10 --stop-time=11 --scene-format=png --scene-ratio=24 --scene-prefix=snap --scene-path=C:\path\for\snapshots\ vlc://quit

上述操作每 24 帧保存 1 帧(--scene-ratio=24),从 00:00:10 开始,到 00:00:11 结束。

刚刚测试并确认它可以在全新安装的 Windows 8 上与 VLC 2.0.3 配合使用(我没有其他视频插件或软件)。

完整文档:http://wiki.videolan.org/How_to_create_thumbnails

相关内容