reemplazar marcos negros con marcos anteriores

Tengo imágenes problemáticas de buceo debido a mi cámara/tarjeta SD: aproximadamente cada cuarto cuadro es solo negro, y quiero reemplazar todos esos cuadros negros con una interpolación entre el cuadro anterior y el siguiente o simplemente duplicar el cuadro anterior.

Encontré esta pregunta "eliminar marcos negros de archivos vob con ffmpeg" , pero no quiero cortar los marcos, sino interpolar entre los dos marcos o duplicar el marco anterior.

Creo que podría obtener todas las posiciones relevantes con los filtros de cuadro negro, etc., pero ¿qué tipo de acciones usaría para reemplazar esos cuadros con una interpolación o un duplicado del cuadro anterior de forma totalmente automática (así que solo pasar mi archivo de película al guión)?

Todo lo que he encontrado hasta ahora es el método "shuffleframes", que de alguna manera podría (¿cómo?) alimentar con la posición de los cuadros negros y luego duplicar el cuadro anterior.

Las imágenes de demostración que detallan el problema se pueden encontrar aquí .

Respuestas (1)

Es posible eliminar los marcos negros y duplicar los marcos anteriores.

ffmpeg -i in.mp4 -vf blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less -vsync cfr -c:a copy out.mp4

El filtro de marco negro analiza y registra la proporción de píxeles de un marco que son negros. El filtro de metadatos mantiene todos los fotogramas que tienen como máximo el 50 % de los píxeles en negro. Los fotogramas eliminados crean un espacio en la transmisión de video. Entonces, al configurar el método de sincronización de video a una velocidad de cuadros constante, ffmpeg duplica los cuadros anteriores (no negros) para llenar esos espacios.

Tendrá que experimentar con el valor de selección de metadatos 50para obtener el umbral correcto.

Esto es increíble. Prácticamente logra lo que quería (creo). Sin embargo, me pregunto cómo a) maneja los casos en los que hay múltiples marcos negros que siguen directamente b) por qué los archivos de salida son consistentemente más largos que los archivos de entrada (en cuanto a la duración)
¿Por qué la salida tiene una duración más larga que la entrada?
Compartir registro completo. ¿De cuánta diferencia estamos hablando?
Hola, lo siento por la demora en responder. La diferencia ya es de algunos segundos, por ejemplo, aquí pastebin.com/NfTVtEC0 archivo original: cl.ly/qSfM archivo ffmpeged: cl.ly/qSMr
No veo la diferencia. Mediainfo muestra la duración del formato para el original: 3 s 532 msy para el archivo nuevo3 s 534 ms
Hmm, los alineé en Final Cut y el de arriba es el transcodificado y es más largo. cl.ly/qSQr Y este es solo un video de 3 segundos... Y las líneas de audio también se ven diferentes cl.ly/qRvs 🤔
Su fuente es de velocidad de fotogramas variable. Aparentemente, FCP no puede respetar eso: ajusta los clips a una velocidad de fotogramas constante. Lo que reducirá la duración del clip si hay fotogramas con una duración individual superior a 1/fpssegundos.
En lugar de reemplazarlo con el marco no negro más reciente, ¿es posible interpolar los marcos que faltan? [Editar] Ahora hice una nueva pregunta para esto