Получите неподвижный кадр во время захвата видео с веб-камеры в Linux

Я хочу захватывать видео с веб-камеры (сохранение в файл), время от времени получая самый последний кадр (из кода 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 ответ


Вы можете иметь несколько выходов для FFmpeg. Объедините ваши команды:

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

Есть идеи?

10000