This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

[INFO] Feature Request: Per scene encoding
#1
Lightbulb 
Hello,
It could greatly improve the final quality of the encoding to split the input video into scenes and encode each one to achieve the same visual quality value (using a metric such as VMAF, SSIM etc) as this project tries to do:

https://github.com/master-of-zen/Av1an
Reply
#2
Do I get this right the idea is to rencode each scene until all hit at least some quality level defined by calculating the VMAF score after each encode?
I agree that chunked encoding can make sense to encode faster if the encoder isn't well parallized.
But reencoding xy times to hit a specific target VMAF does not sound like a good idea, instead the encoder you want to use should use VMAF as quality measurement base.
-> I'm not going to implement this in Hybrid, but hey simply use Av1an if you think this is a good idea. Also you might want to suggest using VMAF to the authors of the encoders.

Cu Selur

Ps.: If it's just about the speed, Hybrid also has an *experimental* support for chunked encoding (Config->Internals->Chunked encoding)
Reply
#3
Yes there would be multiple re-encodings (even via binary search of the crf equivalent, without having to massively increase attempts for other setting changes which at that point would be so many attempts that the machine learning route would be preferable as a best setting search approach)
Also by dividing by scenes, just following the principle of constant quality, you would get a quality advantage the more the scenes are different from each other.
And also more speed if there was not already enough parallel computation.
It seems to me that the Aomedia AV1 encoder has already implemented a setting to adjust the quality according to the VMAF value but I think the next step is to find an homogeneous division of the scenes compared to consider the whole video and average the VMAF value (I'm not an expert in the field nor can I be sure that the Aomedia encoder is not already designed this way).
I simply wanted to suggest a different mode that I was impressed to find in Av1an.
Reply
#4
aomenc has a bunch of tune options which allow to tune the rate distortion metrics with psnr, ssim, vmaf_with_preprocessing, vmaf_without_preprocessing, vmaf, vmaf_neg, butteraugli.
So may be using Hybrids chunked encoding with one of the tune vmaf options and constrained quality encoding might be worth to try for you.

Cu Selur
Reply
#5
Yes, thanks.
I used it but unfortunately with the options VMAF, vmaf_without_preprocessing the encoding crashes.
Also seems that vmaf_with_preprocessing and none have the same command arguments in hybrid

on Windows 10 and Hybrid 2022.03.20.1


Attached Files
.zip   HybridDebugOutput.zip (Size: 25,63 KB / Downloads: 7)
Reply
#6
Okay, encoding aborts with:
Error: Tried to set control 24 = 6
Failed to control codec: Invalid parameter
    This error may be related to the wrong configuration options: try to set -DCONFIG_TUNE_VMAF=1 at the time CMake is run.
seem like m-ab-s doesn't build aomenc by default with vmaf support any more.
https://github.com/m-ab-s/media-autobuil.../pull/1530
-> I'll look into it after work.

Cu Selur
Reply
#7
Send you a link to a dev version which comes with a aomenc-build which supports vmaf.

Cu Selur
Reply
#8
Thank you, I am trying to install it.
Meaning I'm looking for a way again to bypass the mysterious Out of Memory error https://forum.selur.net/thread-2207.html.
Usually it was enough to wait 10+ minutes at the error window.

I've also noticed (with the version before this dev) the encoding with AOMedia is very slow, Good quality deadline helps to speed it up, since there are no presets like in x264-x265, do you have any advice to speed it up?
Reply
#9
You might want to read:
https://forum.doom9.org/showthread.php?t=183907
and
https://forum.doom9.org/showthread.php?t=183906

Cu Selur
Reply
#10
Thanks, I'll read these tomorrow.
I've managed to install the dev version sent but it still crash at encoding with tune VMAF.

I think this is the line with the error

level 9: aomenc output: Error: Unrecognized option -vmaf-model-path=C:/Program Files/Hybrid/64bit/vmaf_v0.6.1.json

Probably it needs the linux-like path like the others vmaf-based tools for windows do, replacing
escaping the
:
with
\:

More info: https://github.com/Netflix/vmaf/issues/424


Attached Files
.zip   HybridDebugOutput.zip (Size: 25,93 KB / Downloads: 7)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)