
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
}
두 프레임 간의 실제 차이는 노이즈에 따라 결정되므로 내용에 따라 크게 달라집니다. 피사체가 변경되지 않은 경우에도 "노이즈"는 카메라/센서 노이즈를 의미할 수 있으며 이는 캡처된 두 프레임 간에 항상 다를 수 있습니다.
컴퓨터 생성 콘텐츠의 경우에만 동일한 주제를 포함하는 프레임 간의 차이가 0(또는 0에 매우 가깝습니다)입니다.