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

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

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

  • Как использовать mencoder для ускорения видео?
  • Как я могу объединить два файла mp4 без потери качества?
  • FFMPEG создает зомпан, шаткий или неустойчивый
  • Нет вывода видео, все
  • Почему FFmpeg добавляет пустое черное видео в конец моих файлов MP4 при сжатии из MOV?
  • Как остановить людей от загрузки онлайн-видео для офлайн-воспроизведения?
  • 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?
  • Пакетное преобразование папки .mkv-файлов в файлы .m4v с использованием ffmpeg в MAC OS X
  • Как получить временную метку ближайшего ключевого кадра перед заданной меткой времени с помощью FFmpeg?
  • Восстановление поврежденного MP4
  • Почему файл перекодирования сервера Plex можно напрямую воспроизводить?
  • Текст цикла, который стирает слева направо, используя фильтр FFMPEG drawtext
  • 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 при использовании видеофильтров.

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