como determinar a tolerância ao ruído para usá-lo no filtro de detecção de congelamento no ffmpeg

como determinar a tolerância ao ruído para usá-lo no filtro de detecção de congelamento no ffmpeg

Estou tentando usar o filtro de detecção de congelamento no ffmpeg.

ffmpeg -i Trial.mp4 -vf "freezedetect=n=-60dB:d=0.5,metadata=mode=print:file=freeze.txt" -map 0:v:0 -f null -

Usei o comando acima e a saída diz sem congelamento. Mas o vídeo é um vídeo parado feito no celular.

Se eu ajustar o nível de ruído para 0,05, serão relatados congelamentos.

Como determinar esse valor?

Responder1

Você só pode determinar isso por tentativa e erro.

O filtro calcula a diferença entre dois quadros como a razão entre a soma das diferenças absolutas (TRISTE). Em pseudocódigo:

is_frozen(reference, frame) {
    sad = 0
    count = 0
    for plane in planes[frame] {
        sad += sad_of_plane(plane, reference, frame)
        count += width[plane] * height[plane]
    }
    ratio = sad / count
    return ratio <= noise
}

Como a diferença real entre dois quadros é determinada pelo ruído, ela dependerá muito do conteúdo. Observe que mesmo que o assunto não tenha mudado, “ruído” pode significar ruído de câmera/sensor, que sempre será diferente entre dois quadros capturados.

Somente para conteúdo gerado por computador a diferença entre frames com o mesmo assunto será zero (ou muito próxima de zero).

informação relacionada