Netflix / vmaf

Perceptual video quality assessment based on multi-method fusion.
Other
4.67k stars 755 forks source link

Handling of Frame Drops Due to Packet Loss in VMAF Evaluation #1366

Closed reo-g closed 5 months ago

reo-g commented 6 months ago

Hello. I am experiencing a few percent packet loss in a network environment I am working on. As a result, the number of frames of received files is decreasing due to packet loss.

In the context of VMAF evaluation, how is the processing handled when packet loss causes frame drops?

I would like to understand how VMAF handles situations where frame drops occur due to packet loss. Are there specific measures or adjustments in the algorithm to account for the missing frames, or is the evaluation carried out with the remaining frames as is? Any clarification on this issue would be greatly appreciated.

ffmpeg command: ffmpeg -r 5 -i {packetloss.mp4} -r 5 -i {baseline.mp4} -lavfi "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=vmaf_v0.6.1.json:log_fmt=xml:log_path=/dev/stdout: n_threads=16" -an -f null –

nilfm99 commented 6 months ago

Hi @reo-g,

VMAF works with pairs of frames {reference, distorted}, and expects those frames to be perfectly aligned. If there is a drop or duplication in either the reference or distorted, this will cause misalignment and VMAF scores won't be reliable. Same goes for other VQ metrics provided in libvmaf (PSNR, SSIM, ...).

However, I see you are calling libvmaf via ffmpeg. The responsibility of aligning the frames will be on ffmpeg, and it will depend on the filters you set before the call to libvmaf. It may be useful for you to experiment by first decoding into yuv or y4m files via ffmpeg and inspecting if those are aligned or even have the same number of frames.