在Linux上的网络摄像头视频捕获期间获取静止帧

时间:2020-01-15 02:12:06

标签: python linux video ffmpeg

我想从网络摄像头捕获视频(保存到文件),同时偶尔获取最新的静止帧(从python代码获取)。 有没有办法在Linux上做到这一点?

我尝试过的事情:

# Capture Video:
ffmpeg -f v4l2 -framerate 30 -video_size 1024x576 -i /dev/video0 myvideo.mp4

...

# In another terminal, try to capture the latest still frame:
ffmpeg -sseof -3 -i myvideo.mp4 -update 1 -q:v 1 current_frame.jpg

但是,我从上一条命令得到的响应各种各样,例如

Cannot use -sseof, duration of myvideo.mp4 not known

[matroska,webm @ 0x55e1aae26900] Duplicate element
    Last message repeated 2 times

其他说明/约束:

  1. 从python(例如,通过ffmpeg调用subprocess.Popen)到(a)开始记录,(b)在任意点获取帧,(c)停止记录,必须有可能控制解决方案。
  2. 帧定时不必精确。最后几秒之内的一帧就可以了。
  3. 任何容器格式都可以(例如mkv,mp4等)
  4. 其他程序很好,而不仅仅是ffmpeg

1 个答案:

答案 0 :(得分:1)

您可以为FFmpeg提供多个输出。合并您的命令:

ffmpeg -f v4l2 -framerate 30 -video_size 1024x576 -i /dev/video0 myvideo.mp4 -r 1 -update 1 current_frame.jpg