如何从 Xubuntu 16.04 中视频的特定时间提取图像?

Son*_*vol 10 command-line video 16.04

我正在寻找命令行选项。

例如,如果我有视频sample-video.mp4,并且我想sample-image.jpg在 00:00:26 时间从视频生成图像文件,我应该给出什么命令?

此外,如果您能详细解释命令的每个参数的功能,那将非常有帮助。

Rob*_*edl 14

您可以使用ffmpeg

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
Run Code Online (Sandbox Code Playgroud)
  • -loglevel将日志输出设置为安静,因为 ffmpeg 非常健谈
  • -ss是搜索(以秒为单位,即您要拍摄快照的位置)
  • -i输入视频文件
  • -t快照的时间范围(以秒为单位)
  • -f文件类型

您还可以使用选项,例如控制 jpeg 输出-q:v <linear integer 1-10>或分辨率的 质量-s 480x300

这里还有一些想法


VLC方法

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
Run Code Online (Sandbox Code Playgroud)
  • cvlc - 因为它是命令行,我们不想打开任何窗口。此外,这意味着我们可以在没有 X11 的情况下运行它。

  • --start-time=26 - 以秒为单位的快照的确切位置

  • --run-time=1 - 视频将“播放”多长时间(以秒为单位)。我们播放一秒来制作这一秒的截图
  • --rate=1什么时候截屏。这基本上意味着“每秒”,如果您有更长的文件,每 60 秒或每 5 分钟截取一次屏幕截图很有用
  • --video-filter=scene告诉 VLC 我们要截屏
  • --vout=dummy在 X11 上没有视频输出,我们不需要它
  • --aout=dummy没有音频输出,我们不需要它
  • --scene-ratio=24 我们告诉 VLC 每秒大约有 24 帧
  • --scene-prefix=sample-image 截图的文件名
  • --scene-replacesample-image.png用您当前的屏幕截图 替换任何像您的屏幕截图一样调用的文件。如果您省略此项,VLC 将开始为屏幕截图编号
  • vlc://quit 完成后退出 vlc

完整的文档在这里

  • “健谈”是因为 ffmpeg 使用此命令打印了 40 多行日志输出,例如当前版本、设置类型和有关输入视频文件的信息 - 这对您来说是无趣的。出于您的目的,您可能可以省略“-t 1”。似乎默认值是一秒或它的一小部分,这对于屏幕截图来说很好。很好的区别是可以定义输出文件名和调整质量/分辨率等 (3认同)

Flo*_*sch 9

您可以使用mplayer(来自 package mplayer,默认情况下未安装):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4
Run Code Online (Sandbox Code Playgroud)

这将创建文件,00000001.jpg因此您必须重命名它。据我所知,无法指定文件名。

-vo jpeg意味着你想要JPEG输出,-ss 00:00:26寻找给定的位置,-frames 1意味着处理一帧然后退出。

  • @Sonevol 恰好在 0:00:26 的帧可能不是*完全*您想要的。您可能希望在 0:00:25 和 0:00:27 之间拍摄约 50 帧(甚至在 0:00:26 标记附近仅 3-4 帧),然后浏览它们以选择最佳帧。 (5认同)