¿Cómo elimino imágenes nocturnas de 300 días de video de lapso de tiempo?

Quiero eliminar imágenes nocturnas de un video de Timelapse de una construcción de más de 300 días. Así que quiero quitar 300 noches de este video. ¿Cómo lo hago de una manera más fácil? ¿Existe una opción para cortar video en cuadros/puntos predefinidos después de intervalos regulares en un solo comando? Quiero evitar el trabajo manual. estoy usando adobe premier pro cc 2014

¿Es una cámara fija y una zona del encuadre muestra el cielo? En realidad, ¿puedes compartir un cuadro de la noche?
Es una cámara fija Timelapse. Muestra el progreso de todo el día en 3 segundos. Quiero cortar el medio 1 segundo de él. Pero el problema es que el metraje es continuo durante 300 días... así que necesito cortar cada tercer segundo a partir del segundo segundo, es decir, el segundo, el quinto, el octavo, el onceavo y así sucesivamente. Esto es muy tedioso de hacer individualmente. ¿Hay alguna opción mediante la cual pueda establecer una fórmula como... cortar 2 a 3 segundos, 2+3 a 3+3 sexo, 2+3 a 3+3 segundos y así sucesivamente hasta el final del video, todo a la vez?
Si está de acuerdo con el uso de una herramienta de línea de comandos (ffmpeg), proporcionaré un comando por la mañana para hacerlo.
Todavía no lo he usado, pero me envías un comando, aprenderé a usar los comandos.

Respuestas (3)

Usando ffmpeg, una herramienta de línea de comandos, puede usar

ffmpeg -i in.mp4 -vf select='trunc(mod(t+2,3))',setpts=N/FRAME_RATE/TB -crf 23 out.mp4

El selectfiltro se utiliza en la transmisión de video. Este filtro evalúa la expresión proporcionada en cada cuadro y mantiene el cuadro si la expresión se evalúa como un valor distinto de cero.

La expresión utilizada es trunc(mod(t+2,3)). La función módulo devuelve el resto del primer operando cuando se divide por el segundo. El primer operando aquí es la marca de tiempo del marco evaluado. La función truncar trunca ese resultado a un número entero. Si es cero, el marco se descarta, de lo contrario se mantiene.

por ejemplo, para un video de 25 fps

t       t+2      mod(t+2,3)       trunc(mod(t+2,3))    select
0.00    2.00     2.00                    2             KEEP
0.04    2.04     2.04                    2             KEEP
...
0.96    2.96     2.96                    2             KEEP
1.00    3.00     0.00                    0             CUT
1.04    3.04     0.04                    0             CUT
...
1.96    3.96     0.96                    0             CUT
2.00    4.00     1.00                    1             KEEP
...
3.00    5.00     2.00                    2             KEEP
...
4.40    6.40     0.40                    0             CUT
...

Dado que desea 'colapsar' el video eliminando las partes nocturnas, el setptsfiltro se agrega para que todos los cuadros guardados sean continuos, es decir, después del cuadro en 0.96, el siguiente cuadro guardado (2.00) tendrá la nueva marca de tiempo de 1.00.

El video tiene que ser recomprimido ya que se ha utilizado un filtro. Para MP4, el códec predeterminado es H.264 y el codificador predeterminado es libx264. El -crf 23establece el método de control de tasa de bits (CRF) y el valor (23). Los valores más bajos retienen más de la calidad de la fuente a expensas de un tamaño más grande. 18 a 28 son valores típicos.

Puede obtener un binario ffmpeg para su plataforma desde https://ffmpeg.org/download.html . Obtenga siempre la última compilación nocturna o instantánea.

Para su información, debe agregar una barra invertida antes de la coma en la función de selección para que funcione (al menos en Linux), es decir:

ffmpeg -i in.mp4 -vf select='trunc(mod(t+2\,3))',setpts=N/FRAME_RATE/TB -crf 23 out.mp4

De lo contrario, obtendrá un error de "demasiados argumentos".

Tengo una configuración modificada en la que tomé un lapso de tiempo cada 1 hora durante 30 días. Quiero quitar 12 horas de la noche. Había modificado el de Gyan selectcon lo siguiente:

select='trunc(mod(t*30-2\,24)/12)'

Aquí estoy multiplicando tpor mi velocidad de fotogramas 30para convertir el tiempo en un número de fotograma. Luego proporciono un desplazamiento de marco -2para comenzar en un marco diferente. A continuación tomo el mod 24puesto que tengo 24 fotogramas en 1 día. Finalmente, divido por 12y truncporque quiero eliminar 12 fotogramas de cada día. Y aquí está el código final.

ffmpeg -i in.mp4 -vf select='trunc(mod(t*30-2\,24)/12)',setpts=N/FRAME_RATE/TB -crf 23 out.mp4