![如何确定噪声容忍度以在 ffmpeg 中的冻结检测过滤器中使用它](https://linux22.com/image/1605231/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%99%AA%E5%A3%B0%E5%AE%B9%E5%BF%8D%E5%BA%A6%E4%BB%A5%E5%9C%A8%20ffmpeg%20%E4%B8%AD%E7%9A%84%E5%86%BB%E7%BB%93%E6%A3%80%E6%B5%8B%E8%BF%87%E6%BB%A4%E5%99%A8%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%AE%83.png)
我正在尝试在 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
}
由于两帧之间的实际差异取决于其噪声程度,因此它将非常依赖于内容。请注意,即使主体没有变化,“噪声”也可能意味着相机/传感器噪声,这在两个捕获的帧之间总是不同的。
仅对于计算机生成的内容,具有相同主题的帧之间的差异才为零(或非常接近于零)。