![如何在 Xubuntu 16.04 中从视频的特定时间提取图像?](https://linux22.com/image/1062370/%E5%A6%82%E4%BD%95%E5%9C%A8%20Xubuntu%2016.04%20%E4%B8%AD%E4%BB%8E%E8%A7%86%E9%A2%91%E7%9A%84%E7%89%B9%E5%AE%9A%E6%97%B6%E9%97%B4%E6%8F%90%E5%8F%96%E5%9B%BE%E5%83%8F%EF%BC%9F.png)
我正在寻找命令行选项。
例如,如果我有视频sample-video.mp4
,并且我想sample-image.jpg
在时间 00:00:26 从视频中生成图像文件,我应该输入什么命令?
此外,如果您能详细解释该命令的每个参数的作用,那将会非常有帮助。
答案1
您可以使用ffmpeg
ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4 -t 1 -f image2 anyfilename.jpeg
- -日志级别将日志输出设置为安静的因为 ffmpeg 非常健谈
- -ss正在搜索(以秒为单位,即您想要拍摄快照的位置)
- -我输入视频文件
- -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
循环流化床- 因为它是命令行,我们不希望打开任何窗口。此外,这意味着我们可以在没有 X11 的情况下运行它。
–开始时间=26- 是快照的准确位置(以秒为单位)
- --运行时间=1- 视频将“播放”多长时间(以秒为单位)。我们播放一秒钟,以便截取这一秒的屏幕截图。
- --rate=1何时截取屏幕截图。这基本上意味着“每秒”,如果你有较长的文件,则每 60 秒或每 5 分钟截取一次屏幕截图很有用
- --视频过滤器=场景告诉 VLC 我们要截屏
- --vout=虚拟X11 上没有视频输出,我们不需要它
- --aout=虚拟没有音频输出,我们不需要它
- --场景比例=24 我们告诉 VLC 每秒大约有 24 帧
- --场景前缀 = 示例图像 屏幕截图的文件名
- --场景替换 用当前屏幕截图替换任何与屏幕截图类似的文件
sample-image.png
。如果你省略此操作,VLC 将开始对屏幕截图进行编号 - vlc://退出 完成后退出 vlc
完整的文档这里
答案2
您可以使用mplayer
(来自包mplayer
,默认情况下未安装):
mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4
这将创建文件00000001.jpg
,因此您必须重命名它。据我所知,没有办法指定文件名。
-vo jpeg
表示您想要 JPEG 输出,-ss 00:00:26
寻找给定的位置,-frames 1
表示处理一帧然后退出。