-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VMAF and SD Footage #277
Comments
VMAF isn't great for targeting visually lossless results. Its strengths lie in evaluating low-to-good quality video (the quality range used in streaming video over the internet, basically). I'd recommend trying XPSNR instead for your use case. I'm not all that familiar with it (only began using it when ab-av1 added support a month ago), but according to this wiki, 42 should be visually lossless. So start with If you end up using VMAF, I'd suggest using the same process to find a value that suits your needs. Since your use-case is fairly specific, I doubt there's anyone who can tell you exactly what to do. Trying things out is the best way of doing things in this field anyway. As for scaling, according to Netflix themselves, upscaling lower-than-1080p footage to 1080p is the correct way to calculate VMAF (assuming you're using the default model, which was trained on 1080p footage and a viewing distance of three times the screen height). ab-av1 does this automatically and uses the default 1080p model for any video that's a certain amount below 1080p in resolution (you can find the exact amount in the --help output, but VHS is certainly below that). |
Thanks, that is very helpful. I appreciate the full response. I'm not familiar with XPSNR but will look into it. After further trial and error it appears like running I haven't been able to visually confirm yet as I've been just remoting into the machine, but by the numbers I'd be happy with that. Thanks |
Citation needed here, based on what analysis/tests is this concluded?
From the very same wiki, we read:
So XPSNR uses The So from the information in that wiki, XPSNR cannot be used reliably using a baseline quality score value that would provide repeatable results. This can infer that using |
Update: I did try XPSNR, but no CRF value could be found at value 42, 32, or 30. Once I tried a min-xpsnr value of 28 it found: crf 38.8 XPSNR 28.07. As of now I'm running I tried a min-vmaf value of 95, but I could actually see the difference between 95 and 98; 98, obviously, being visually very close to the source file. Fine details like letters or window panes were evident at 98, when they were blurry at 95. |
Are you deinterlacing first or is it intended, that the material should be encoded that way? |
Purposely keeping it interlaced. |
I was wondering if you could provide further guidance with VMAF scores and SD footage. We are digitizing old beta tapes to ProRes 422 interlaced, bottom field first. I've used Claude and ChatGPT to create a script that takes the .mov file, runs ab-av1 on it to find the optimal CRF, then takes that CRF and passes it to an ffmpeg encode.
I have min-vmaf set to 70 because the footage is SD and Netflix told Jan Ozer SD video score between 40-70. However, based on other threads here, I think ab-av1 may default "scale" the SD, 720x480 interlaced footage to 1080? Is that correct or do I need to set --vmaf-scale? If ab-av1 defaults to scale, then I need to keep min-vmaf to 95, yes?
Thanks, code currently in script is below.
crf-search --encoder libx264 --min-vmaf 95 --pix-format yuv420p10le -i
ffmpeg -y -nostdin -hwaccel auto \ -i "$input_file" \ -c:v libx264 \ -pix_fmt yuv422p10le \ -flags +ilme+ildct \ -field_order bt \ -crf "$crf_value" \ -preset slower \ -profile:v high422 \ -level:v 5.1 \ -x264-params "weightp=0:bff=1" \ -c:a copy \ -map 0 \ "$output_file"
The text was updated successfully, but these errors were encountered: