如何确定噪声容忍度以在 ffmpeg 中的冻结检测过滤器中使用它

如何确定噪声容忍度以在 ffmpeg 中的冻结检测过滤器中使用它

我正在尝试在 ffmpeg 中使用冻结检测过滤器。

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

使用上述命令,输出显示没有冻结。但视频是在手机上拍摄的静止视频。

如果我将噪音水平调整到 0.05,就会报告冻结。

如何确定这个值?

答案1

您只能通过反复试验来确定这一点。

该滤波器计算两帧之间的差异,即它们的绝对差异之和 (伤心)伪代码如下:

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
}

由于两帧之间的实际差异取决于其噪声程度,因此它将非常依赖于内容。请注意,即使主体没有变化,“噪声”也可能意味着相机/传感器噪声,这在两个捕获的帧之间总是不同的。

仅对于计算机生成的内容,具有相同主题的帧之间的差异才为零(或非常接近于零)。

相关内容