Algunos teléfonos móviles pueden compensar las condiciones de poca iluminación integrando cada dos o más fotogramas en uno. El resultado es un video con velocidad de cuadros variable, donde cada imagen tiene su marca de tiempo particular. Este tipo de material de archivo muestra sujetos correctamente iluminados, pero se nota la caída en la velocidad de fotogramas porque el movimiento no es fluido y también las imágenes se vuelven más ruidosas (porque también se agrega el ruido producido por la electrónica). De todos modos me parece un milagro tecnológico, teniendo en cuenta que la pupila de entrada de este tipo de dispositivos no puede tener más de 1 mm de diámetro.
Pero digamos que obligaste al teléfono a grabar a una velocidad de fotogramas fija (por ejemplo, 1280x720p30 con OpenCamera en Android). Debería ser posible convertir, por ejemplo, 30p a 15p sumando los valores almacenados en los píxeles correspondientes de cada dos cuadros en uno. Sé que este proceso es posible porque es habitual en otros contextos, por ejemplo, cuando se trata de imágenes astronómicas.
Mis herramientas son ffmpeg y Blender. Estaría agradecido si alguien pudiera restringir la respuesta a estas herramientas, aunque otras soluciones también son bienvenidas porque podrían ponerme en el camino correcto para buscar alternativas adecuadas.
Como observa, simplemente agregar (integrar) cada par de cuadros adyacentes para crear un nuevo cuadro disminuye la velocidad de cuadro.
Pero si todo lo que desea hacer es integrar cuadros adyacentes, considere duplicar el video en una línea de tiempo separada, desplazada exactamente un cuadro. La integración de estas dos transmisiones le daría un nuevo video con la misma velocidad de fotogramas, pero más corto en un fotograma en general.
El resto de los problemas señalados podrían surgir, pero al menos la velocidad de fotogramas no cambiaría.
Mi propia respuesta, no completamente satisfactoria, que podría ser útil:
Esta línea muy simple hace el truco:
ffmpeg -i input vf "tblend=addition,framestep=2" {opciones de codificación} salida
P.ej
ffmpeg -i input.mp4 -vf "tblend=adición,framestep=2" -c:v libx264 -crf 16 -c:a copia salida.mp4
input.mp4 tenía una velocidad de fotogramas variable <= 30, mientras que output.mp4 es de 15 fps. Podría haber especificado una velocidad de fotogramas constante para el archivo de salida, por ejemplo
ffmpeg -i input.mp4 -vf "tblend=adición,framestep=2" -c:v libx264 -r 30 -crf 16 -c:a copia salida.mp4
No aceptaré mi propia respuesta, porque el resultado de este proceso es una fea superposición de los objetos en movimiento entre fotogramas consecutivos , por lo que se necesita algún tipo de desenfoque adaptativo, por lo que dejo la pregunta abierta para que alguien dé una mejor solución.
¡Con la física! Todo lo que tiene que hacer es grabar a 15 cuadros por segundo en primer lugar y usar una velocidad de obturación de 1/15 de segundo (también conocido como un ángulo de obturación de 360 grados). Esto efectivamente hace lo mismo que combinar dos fotogramas de 1/30 de segundo y 30 fps con software, solo lo hace dejando que la luz llegue al sensor durante el doble de tiempo en primer lugar. ¡No se necesitan cálculos ni matemáticas sofisticados!
usuario24601
jim mack