从网络摄像头流中保存帧

saving frames from webcam stream

我想要一个系统地从网络摄像头镜头中提取帧并将其保存到我个人计算机上的本地目录的例程。

具体来说,我正在尝试保存 Yellowstone Natl 的 Old Faithful 间歇泉网络摄像头的帧。公园。 (https://www.nps.gov/yell/customcf/geyser_webcam_updated.htm)

理想情况下,我想:

  1. 能够控制下载帧的速率(例如每分钟下载 1 帧)
  2. 使用 FFMPEG 或 R
  3. 保存实际帧而不是网页 快照

尽管上面有第 3 点,我已经尝试使用包 webshot:

在 R 中简单地拍摄 屏幕截图
library(webshot)
i=1
while(i<=2) { 
webshot('https://www.nps.gov/yell/customcf/geyser_webcam_updated.htm',delay=60,paste(i,'.png',sep=""))

i=i+1
}

但是,从上面的代码中我得到了这两张图片:

尽管 webshot() 函数有延迟(60 秒),但两个图像是相同的,更不用说中间明显的播放按钮了。这种方法似乎也有点 hack 因为它保存的是网站的快照而不是框架本身。

我当然愿意使用更合适的命令行工具(我只是不确定它们是什么)。任何帮助是极大的赞赏!

URL节目的源代码,在video标签下

<source type="application/x-mpegurl" src="//56cf3370d8dd3.streamlock.net:1935/nps/faithful.stream/playlist.m3u8">

src 标识一个 HLS 播放列表。因此,您可以 运行 定期使用 ffmpeg 来获得这样的图像输出:

ffmpeg -i https://56cf3370d8dd3.streamlock.net:1935/nps/faithful.stream/playlist.m3u8 -vframes 1 out.png