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
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 select
filtro 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 setpts
filtro 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 23
establece 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 select
con lo siguiente:
select='trunc(mod(t*30-2\,24)/12)'
Aquí estoy multiplicando t
por mi velocidad de fotogramas 30
para convertir el tiempo en un número de fotograma. Luego proporciono un desplazamiento de marco -2
para comenzar en un marco diferente. A continuación tomo el mod 24
puesto que tengo 24 fotogramas en 1 día. Finalmente, divido por 12
y trunc
porque 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
gian
usuario18315
gian
usuario18315