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

これを判断できるのは試行錯誤だけです。

フィルタは、2つのフレームの差を、それらの絶対差の合計(悲しい)。疑似コードでは:

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
}

2 つのフレーム間の実際の違いはノイズによって決まるため、コンテンツに大きく依存します。被写体が変わっても、「ノイズ」はカメラ/センサーのノイズを意味する可能性があり、これはキャプチャされた 2 つのフレーム間で常に異なることに注意してください。

コンピューターで生成されたコンテンツの場合のみ、同じ被写体のフレーム間の差はゼロ(またはゼロに非常に近い)になります。

関連情報