如何使用具有特定搜索时间的ffmpeg从在线视频流中捕获多个屏幕截图

时间:2017-08-09 05:55:32

标签: ffmpeg

我正在使用ffmpeg从在线视频流中截取屏幕截图。我想寻求多个时间表。我使用以下命令通过seek命令捕获1个屏幕截图: ffmpeg -ss 00:02:10 -i" stream-url" -frames:v 1 out1.jpg

如何通过多次搜索时间拍摄多个屏幕截图。我已经找到了解决方案但没有成功。

我已使用以下命令拍摄多个屏幕截图,如下所示: ffmpeg -noaccurate_seek -ss 00:01:10 -i" stream-url" -map 0:v:0 -vframes 1 -f mpeg" thumb / output_01.jpg" -ss 00:02:10 -i" stream-url" -map 1:v:0 -vframes 1 -f mpeg" thumb / output_02.jpg"

有没有办法通过搜索命令从同一输入生成屏幕截图?如何让它更快?如何跳过多个输入(-i param)?我也试过其他命令,但那些更慢。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我知道没有简单的方法可以指定一些任意搜索点来提取帧(similar question here)。

然而,按照你指定的方式寻求非常快。您可以使用youtube-dl(如果您还没有完成)下载YouTube视频,而不是构建复杂的命令,并生成如下命令:

ffmpeg -ss 00:01:10 -i input -frames:v 1 out1.jpg
ffmpeg -ss 00:02:05 -i input -frames:v 1 out2.jpg
ffmpeg -ss 00:03:20 -i input -frames:v 1 out3.jpg

请注意,导出JPG可能会导致质量下降。使用PNG是首选;你会得到以后可以用另一个程序处理的无损帧(例如调整大小或压缩)。

如果您想定期获取帧数,​​请使用fps过滤器删除帧速率:

ffmpeg -i input -filter:v fps=1/60 out%02d.jpg

这将每分钟输出一帧(每秒1/60帧=每分钟1帧),两个零填充数字作为输出数字。您还可以通过在输入文件之前提供-ss选项来抵消开始。