
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 つのフレーム間で常に異なることに注意してください。
コンピューターで生成されたコンテンツの場合のみ、同じ被写体のフレーム間の差はゼロ(またはゼロに非常に近い)になります。