Ffmpeg удалить части без движения

У меня есть камера IP-безопасности (192.168.0.8), которая может транслировать контент rtsp по сети.

Я могу сохранить этот (RAW) контент без изменений, используя следующую команду ffmpeg с моего компьютера:

  • Создание видео с изображений с различными SAR с помощью FFMPEG
  • Youtube не нравится некоторые видеоролики
  • Ffmpeg: гладкий зомпан без смеха
  • Изменение частоты кадров в ffmpeg без перекодирования
  • Как транслировать ТВ / Фильмы / Музыка через Интернет на различные устройства с домашнего сервера?
  • Телевизионные записи WTV и DVR-MS, следует ли я де-чередовать или нет?
  • ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -acodec copy -vcodec copy test-raw.mp4 

    Я также могу изменить его размер на лету:

     ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -vf "scale=640:-1" test640.mp4 

    Но как сохранить только то видео, которое содержит только части обнаружения движения?

    Я попытался решить проблему, используя фильтры изменения сцены ffmpeg, но не повезло.

    Моя цель – иметь общее решение для видеонаблюдения, которое обнаруживает, когда кто-то передвигается рядом с камерой и сохраняет его в видеофайл. Я понимаю, что это может быть невозможно сделать «на лету» из потока, поэтому сначала мне нужно сохранить большой файл, затем обработать его с помощью другой команды ffmpeg и создать новый видеофайл, содержащий только обнаруженные движения. Если вы можете дать мне совет, что именно я должен исследовать больше, я буду очень благодарен.

    Мой поток камеры передается без звука. Таким образом, я могу сгенерировать набор изображений из оригинального видео, затем выбрать правильные изображения, а затем сохранить новое видео с изображений.

  • Преобразование изображений в видео с использованием FFMPEG в Windows
  • Разделение видео в нескольких эпизодах с помощью ffmpeg
  • Ffmpeg: Как выбрать конкретный шаблон кадров из потока?
  • Как удалить несколько сегментов из видео с помощью FFmpeg?
  • Как я могу объединить два файла mp4 без потери качества?
  • Как сохранить видео в VLC с использованием фильтров
  • One Solution collect form web for “Ffmpeg удалить части без движения”

    Я бы сделал так, как вы сказали, и сохраните большой файл потока, затем используйте фильтр select FFMPEG с выражением scene , который сравнивает сходство последовательных кадров: select=gt(scene\,0.003) например. Чем выше число, тем больше изменений между кадрами игнорируется, при быстром тестировании вам может потребоваться сделать всего 0,00001-0,00005 в зависимости от вида материала, с которым вы имеете дело.

    Объедините это с фильтром setpts , который изменяет «время начала» видеокадров, и вы получите что-то вроде (для видео с частотой 25 кадров в секунду):

     ffmpeg -i input.mp4 -vf "select=gt(scene\,0.003),setpts=N/(25*TB)" output.mp4 

    Имейте в виду, что вы не сможете использовать -vcodec copy при использовании видеофильтров.

    Давайте будем гением компьютера.