Tengo algunos archivos de video con un fondo razonablemente estático y movimiento ocasional en la escena. Me gustaría reducir el metraje a solo las secciones con movimiento. Como hay varias horas de metraje, preferiría no hacerlo a mano.
Esperaba encontrar una secuencia de comandos o una utilidad a la que pudiera canalizar los medios y obtener segmentos con movimiento del otro lado. Mi búsqueda limitada no ha sugerido nada que pueda hacer esto, a menos que pueda hacer que VLC use su filtro de movimiento de alguna manera para etiquetar cosas.
Preferiría usar un sistema gratuito o FOS, ya que soy barato. Si esa no es una opción, consideraré pagar. Estoy feliz de que el software esté basado en Windows o Linux. Preferiría no volcar todos los cuadros como imágenes fijas, ejecutar una diferencia y volver a codificar, pero si esa es la única forma, entonces probablemente pueda trabajar con eso. Puedo codificar en C, C++, Ruby y un par de otros lenguajes de secuencias de comandos si me presionan. No me importa dedicar un poco de tiempo a escribir algo si no hay nada disponible y otros pueden encontrarlo útil. Sin embargo, no tengo experiencia en el procesamiento de medios, por lo que, aunque entiendo los conceptos, estaría bastante perdido al elegir bibliotecas para usar como punto de partida, etc.
El video es de un comedero para pájaros con un seto y una cerca detrás. Hay un movimiento lento de sombras a medida que el sol se mueve, pero por lo demás el fondo parece estable. Creo que alrededor del 5 % del cuadro se llenará con el movimiento que necesito captar. Solo menciono eso porque configuré la captura de movimiento de ZoneMinder en el pasado, así que estoy familiarizado con la configuración de su filtro.
Incluso si alguien no puede darme una respuesta completa, agradecería algunos consejos, sugerencias y palabras clave que me ayuden a llevar esto adelante.
Hay una pregunta similar en el desbordamiento de pila.
https://stackoverflow.com/questions/28320004/detect-if-video-file-contains-movement
Además de OpenCV, también sugieren SimpleCV http://simplecv.org/ y "Motion" http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
No lo he probado, pero creo que sería posible hacerlo con el filtro de cambio de escena seleccionado de ffmpeg
. Puedes intentar algo como:
ffmpeg -i input.ext -filter:v "select=gt(scene\,0.2)" -c:v copy output.ext
Tenga en cuenta que debe escapar de la coma, aunque el valor esté entre comillas. El segundo parámetro es con lo que necesita jugar para determinar lo que considera "movimiento".
Saqué la idea de: https://www.bogotobogo.com/FFMpeg/ffmpeg_thumbnails_select_scene_iframe.php
kazanaki
kazanaki
Taft