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.

hierarchical B frames or B-pyramid
#3
Thank you for detailed and fast response dear @Selur
Indeed some meaningless variables there in old x264 preset and honestly I was never able to stream because of lacking connection...but what is really odd is popular streaming services using fixed GOP size. It has to be 2 seconds for twitch for example. Limiting 60fps stream to 120 Keyint, 30fps to 60 keyint. No other way around it. Which is why I had to dive into all this encoder technology in the first place as noob, trying to squeeze the max. amount of compression to that small, limited GOP Big Grin Yeah adding OpenCL made quality worse, but at that time It was the only way to take some load off from CPU (It was overloading, and I didn't wanted to increase threads since it ruined quality further) So had to make that decision there.
At some point, I even read the intraRefresh parts of source code of x264 thinking maybe I can do it somehow with 2 second GOP limit and have a better distribution of data, and eliminate pulsation of quality with every I frame, then losing it all after some frames, then repeat. No luck there either.

So best tweak I could find was the strict B-Pyramid trick, with 64 fps. Even a naked eye comparison, it is still visible. Back then I did some VMAF tests on lossless in-game footage and saw it working great with measureable means as well in terms of compression.

For NVencoder tests I wanted to use FFMpeg Advanced tab in OBS but couldn't figure out why video encoder commands are not passing. Even prompting rate control as CBR and limiting bitrate doesn't work using commands such as:
rc=cbr maxBitrate=1000 averageBitRate=1000 vbvBufferSize=1000
and this doesn't pass to encoder settings.

From regular tab I have tested command you gave
[obs-nvenc: 'advanced_video_recording'] settings:
codec:        H264
rate_control: CQVBR
max_bitrate:  6000
cq:          23
keyint:      128
preset:      p7
tuning:      hq
multipass:    fullres
profile:      high
width:        1920
height:      1080
b-frames:    4
b-ref-mode:  0
lookahead:    true (31 frames)
aq:          true
user opts:    useBFramesAsRef=1 frameIntervalP=3 lookaheadDepth=31

added other two more options,
From what Ive read https://obsproject.com/kb/advanced-nvenc-options frameInterval setting changes the way how GOP starts and without any measurement, looks better at setting 2 and 3  gop patterns. how do I know with no measurement but some text looks less degraded with it, seems to have positive impact on data distribution. Not sure ofcourse. Again Thanks for reply. I will now have to figure out why settings at advanced ffmpeg tab doesn't pass to encoder. Always confusing. I don't get it. Should be this code:
https://www.ffmpeg.org/doxygen/trunk/nvE...ource.html

passing into encoder in ffmpeg right? why it doesn't work
EDIT:aaaaahhh... OBS ffmpeg option input expects a unit like M or k at end of bitrate definition.. like averageBitrate=500k it works. my bad Big Grin
Reply


Messages In This Thread
RE: hierarchical B frames or B-pyramid - by BudgetGamer123 - 15.04.2025, 18:55

Forum Jump:


Users browsing this thread: 1 Guest(s)