Automatización de QC para encontrar archivos de video corruptos

Tengo cientos de clips de video corruptos visualmente (!) en H.264 'escondidos' dentro de un conjunto más grande de archivos. Como se han vuelto a transcodificar, ahora todos están técnicamente bien y se reproducirán bien, pero tendrán un destello verde en cada fotograma.

He notado que si ejecuto un archivo a través de QCTools, puedo identificarlos por el valor de 'valores atípicos temporales', ya que cada otro cuadro es drásticamente diferente del anterior (debido a esos destellos verdes).

Me gustaría señalar QCTools a cada archivo en este gran conjunto, pero solo:

  • procesar una pequeña parte de él: no hay tiempo para revisar cada archivo en toda su duración
  • obtener solo un valor: valores atípicos temporales

Revisé la ayuda de la versión CLI de QCTools y no pude encontrar una manera de hacerlo. ¿Alguien tiene alguna otra idea sobre cómo identificar estos archivos? ¿Todavía hay una manera de hacer esto con QCTools?

Si un archivo está dañado, ¿está dañado a lo largo de la transmisión de video o hay partes buenas dentro?
Si la memoria sirve, QCTools en su mayoría solo envuelve los comandos ffmpeg, por lo que es posible que pueda averiguar qué comando ffmpeg calcula el valor de los valores atípicos temporales y automatiza eso.
@MichaelLiebman Excelente idea, buscaré un filtro ffmpeg que haga el trabajo y lo publicaré aquí si encuentro algo. ¡Gracias!
Parpadeo verde suena como si pudiera ser un error de decodificación de gpu. Revisa los archivos en otra máquina para asegurarte de que estén corruptos.

Respuestas (1)

Dado que QCTools envuelve ffmpeg/ffprobe y usa el filtro signalstats, he aquí cómo lograr lo que quería:

ffprobe -f lavfi movie="Bad.mp4","signalstats=tout" -read_intervals %00:01 -show_frames

-show_frames genera el resumen del cuadro en STDOUT. Contiene el valor que necesito:

ETIQUETA:lavfi.signalstats.TOUT=0

-read_intervals me permite procesar solo una pequeña parte del archivo para obtener estadísticas de señal de solo una pequeña parte del archivo

También podemos comprobar cómo lo hace QCTools mirando el código fuente aquí: https://github.com/bavc/qctools/blob/master/Source/GUI/BigDisplay.cpp#L844-L845