Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
16th July 2019, 17:38 | #1 | Link |
Registered User
Join Date: Nov 2016
Posts: 11
|
Highest quality to file size ratio
I didn't see anything about this in the guides or FAQ and googling also hasn't turned up the specific information I'm looking for, so I'm asking here: How can I use H.265 to achieve the highest quality to file size ratio?
A year or two ago I found this post by Ma in the main HEVC thread. Based on that I've been using these Handbrake settings. 1080p MKV format, 1920x1080, no filters, 10-bit H.265, constant framerate same as source, very slow preset, no encoder tune, auto-profile, 2-pass, 1500 bitrate, Extra Options: rc-lookahead=120:bframes=12:ref=6:subme=7 If it is a dark video then: rc-lookahead=120:bframes=12:ref=6:subme=7:aq-mode=3 720p (only listing what's different here and for subsequent resolutions) 1280x720, 760 bitrate 480p 854x480, 360 bitrate 360p 640x360, 300 bitrate These are a starting point, and I've had to adjust the bitrate or try CRF instead, depending on the source files. But I've noticed that others have outdone me when it comes to the quality to file size ratio. It seems there should be a better set of options to start with, or I'm missing something in terms of what settings I should know to try to tweak in different scenarios. I've seen these types of threads before and contributed to them, and they usually have answers like "just find what's right for you", but I would like to at least hear what baseline settings others use and what are the prime candidates for settings to tweak for those that value quality to file size as I do. Last edited by Ischemia24; 17th July 2019 at 13:18. |
16th July 2019, 19:54 | #2 | Link |
Registered User
Join Date: Dec 2008
Posts: 589
|
My advice would be to seriously analyze how much time disk space is really worth to you.
We're at the point where you can buy a 8 TB (~ 7250 GiB in real disk space) for $150 ... that's 0.02$ per GB. At 3 mbps, you're looking at ~ 22 MB per minute or 1.4 GB per hour ... If you're gonna spend maybe 2-3 hours per one hour of encoding you should at least use a higher bitrate, maybe something like 8-10mbps VBR for 1080p and 4-8 mbps VBR for 720p ... if you end up with around 4-6 GB for a 2h movie, you're still looking at less than 0.1$ in disk space cost. // also hmm.. you joined nov 2016 but today's your first post? // ps... also checked the other forum post you mentioned.. hope you realized he used a cartoon for tests... real motion video, bluray with grain etc will behave differently.. make sure you understand why he uses some settings there. |
16th July 2019, 22:48 | #3 | Link | |||
Registered User
Join Date: Nov 2016
Posts: 11
|
Quote:
Quote:
Quote:
I think the Big Buck Bunny movie sample he used is something that you would tune for Film if using H.264 rather than Animation. But I admit I don't know why he went with the particular settings he chose. It was just presented as "true placebo" mode for H.265 and I seized on it. |
|||
17th July 2019, 00:08 | #4 | Link |
Registered User
Join Date: May 2009
Posts: 328
|
Time to change your media server to something larger. Sorry, but that is the reality. Disk space is cheap, and it will actually cost you more in power to convert your movies, than to just store them. IE the amount it will cost in power to use your computer to "save space" by encoding, is more expensive than storing the original on a hard drive and just buying new drives when you run out of space. Especially if you care about quality in your encodes.
|
17th July 2019, 00:12 | #5 | Link |
Moderator
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,750
|
Turning the nebulous concept of "quality" into a linear value that a ratio can be calculated from is a massive unsolved problem in computer vision and human visual perception. Any scale you could come up with would be specific to a given scenario.
|
17th July 2019, 08:10 | #6 | Link |
Registered User
Join Date: Nov 2016
Posts: 11
|
I don't feel like the substance of my question is being addressed. I'm not looking to re-encode my entire library. Just a few things, and most new titles I add. I get that quality is difficult to quantify in the context of video encoding, but we do have methods for it, however imperfect.
Any input on encoding settings? |
17th July 2019, 09:12 | #7 | Link | |
Lost my old account :(
Join Date: Jul 2017
Posts: 322
|
Quote:
And for the "Highest quality to file size ratio" part, this is exactly what crf is good for, just start with a baseline crf of 18 or something and increase it until you hit your sweetspot between visual fidelity and size (cause only you can decide at what point you are pleased with quality), at that point you will have found the "best" "quality to fie size ratio". This will also effect your encoding settings, are you looking at maxing out compression with low bitrates and will accept a lot of quality degradation, or should it be close to visually transparent? Cause for example, --no-sao and --deblock -1:-1 is great for the later case, but no that great for the first one. Last edited by excellentswordfight; 17th July 2019 at 12:09. |
|
17th July 2019, 12:35 | #8 | Link | |
Registered User
Join Date: Nov 2016
Posts: 11
|
Quote:
I appreciate the input regarding no-sao and deblock -1:-1, thank you. I can't see the encoding settings PSArips use, but -- actually, I can see the settings on the Dollhouse episodes. Here's one: Format : HEVC Format/Info : High Efficiency Video Coding Format profile : Main 10@L4@High Codec ID : V_MPEGH/ISO/HEVC Duration : 50 min 17 s Bit rate : 1 200 kb/s Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 10 bits Bits/(Pixel*Frame) : 0.024 Stream size : 432 MiB (81%) Writing library : x265 2.8+19-bcdc610cf5f0:[Windows][MSVC 1914][64 bit] 10bit Encoding settings : cpuid=1111039 / frame-threads=3 / numa-pools=8 / wpp / no-pmode / no-pme / no-psnr / ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace=0 / total-frames=72337 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=20 / lookahead-slices=6 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=1 / dynamic-rd=4.00 / ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=2 / limit-refs=3 / no-limit-modes / me=1 / subme=2 / merange=57 / temporal-mvp / weightp / weightb / analyze-src-pics / deblock=0:0 / sao / sao-non-deblock / rd=3 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=0.00 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=abr / bitrate=1200 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=2 / cplxblur=20.0 / qblur=0.5 / vbv-maxrate=12000 / vbv-bufsize=24000 / vbv-init=0.9 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=0 / overscan=0 / videoformat=5 / range=0 / colorprim=2 / transfer=2 / colormatrix=2 / chromaloc=0 / display-window=0 / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=10 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Default : Yes Forced : No I don't know what to make of this because they've backed off some of the settings I specify, and I don't know what else they may have specified and what values are defaults. High-tier=1 seems significant, but I'm not seeing anything in the documentation about what benefits that could provide. I'm guessing it means poorer compatibility with decoders, but I'm not concerned about that. |
|
17th July 2019, 13:08 | #9 | Link | |
Lost my old account :(
Join Date: Jul 2017
Posts: 322
|
Quote:
Also, the encode that you have sampled is by no means any special, it looks like something like this was used: --preset medium --profile main10 --bframes 8 --aq-mode 3 --sao-non-deblock --limit-sao --bitrate 1200 --vbv-maxrate 12000 --vbv-bufsize 24000. And afaik, main and high teir only effect allowed datarates @ given level, so it doesnt matter that much here, I would think that it is automatically set cause of --vbv-bufsize 24000. Last edited by excellentswordfight; 17th July 2019 at 13:40. |
|
17th July 2019, 18:58 | #10 | Link | |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
Quote:
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
|
17th July 2019, 14:26 | #11 | Link | |
Registered User
Join Date: Dec 2002
Location: Region 0
Posts: 1,436
|
Quote:
Second, you can see all the settings they used. What's stopping you from trying their settings and experimenting? |
|
17th July 2019, 13:08 | #12 | Link |
Herr
Join Date: Apr 2009
Location: North Europe
Posts: 556
|
VMAF is a better video-quality metric than SSIM & PSNR,
https://streaminglearningcenter.com/...af-master.html |
31st July 2019, 20:19 | #14 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
In a recent enough build, there's the new option --hme which is meant to improve motion estimation.
Personally I've also raised qcomp from 0.6 to 0.7 and set rd=6 and use --rd-refine.
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
1st August 2019, 02:00 | #15 | Link | ||
Registered User
Join Date: Nov 2016
Posts: 11
|
Quote:
Quote:
I think I will hold off on hme and hme-search until I see it supported in the standard Handbrake download. I would be willing to use the hme-search 1,2,3 setting once that happens though. I'd have to see what I think of hme-search 1,3,3 to decide if I would incorporate that one into my presets. Taking your word on rc-lookahead=60. I think Ma's post referenced in my OP is probably the only place I've seen it set to 120. The tu-inter and tu-intra settings seem like no brainers, thanks for not letting me miss out on those. Are there any settings here that would be significantly affected by the output resolution? Like are there settings that become more important as resolution gets higher, or any that are definitely no benefit at 480p or 360p output? I'll have to search these forums for info on RipBot264. I could make use of the workload distribution its capable of, but the one time I tried to test that it crashed and I found the UI frustrating compared to what I'm used to (Handbrake). I really appreciate all the helpful info. Last edited by Ischemia24; 1st August 2019 at 12:07. |
||
1st August 2019, 05:52 | #16 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
A higher qcomp basically means that the encoder will use more bits in the more difficult parts of the frame. This should prevent cases where things get too blurry in high motion etc.
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
1st August 2019, 08:57 | #17 | Link | |||
Lost my old account :(
Join Date: Jul 2017
Posts: 322
|
Quote:
Quote:
Quote:
And tbh, I think you are overcomplicating this a bit, the presets are pretty decent in setting appropriate settings based on encoding time trade-offs. And all these settings you are picking up and adding etc, might not be great for your use case, and might not be great for your content, and would need tweaking etc to be appropriate. Its imo better to keep it a bit simpler, at least as a baseline, with the slowest setting you think is realistic for you to use for an real life scenario, then you can look in to settings that affects the specific charactaristics that you are not pleased with. This is what I personally would use for 720p24 and 1080p24 rec709 SDR material if I would target a bitrate on the lower side (I would guesstimate a bitrate arround 2-3Mbps). I might play arround with the different AQ-modes, and if I were on a 3900x like you I might bump up 'slow' to 'slower'. I would recommend you to use something similar as your baseline to evaluate against. --preset slow --profile main10 --ctu 32 --merange 26 --crf 22 --keyint 240 --min-keyint 24 --rc-lookahead 48 --bframes 8 --no-sao --deblock -1:-1 --colorprim bt709 --transfer bt709 --colormatrix bt709 --range limited Last edited by excellentswordfight; 1st August 2019 at 18:27. |
|||
1st August 2019, 22:24 | #18 | Link | |
Registered User
Join Date: Jun 2016
Posts: 116
|
Quote:
I consider Placebo to be the max setting I should use. So like subme 7 I wouldn't go above 5 because placebo doesn't even use it... You'll waste a lot of time for about .1% difference. As other's have mentioned, you find your encodes will speed up if you drop some settings like these. ctu32, me-range 26, qg-size 16 However, there is a small chance you could end up with larger files. It's a speed:size trade off. I'd look into Analysis save and load. You can create a file that saves a lot of the decisions the encoder made during your first attempt at encoding a file. Then if you don't like the outcome and want to make minor changes like bitrate\CRF you can read that log file and it'll take hours to complete instead of days. There is a lot to it so you should read up on it first. https://x265.readthedocs.io/en/defau...ision-analysis |
|
2nd August 2019, 00:25 | #19 | Link |
Moderator
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,750
|
The one thing missing from placebo that I've seen be helpful in special cases is --tskip. Not much for natural images, but it can help with very sharp synthetic edges like text, graphics, or CGI-generated cel-style animation.
|
2nd August 2019, 16:45 | #20 | Link | |||
Registered User
Join Date: Nov 2016
Posts: 11
|
Quote:
My aim for 1080p encodes is pretty much to reach a bitrate as low as ~1200 to 1500 kbps while still looking impressively good to my eyes. 700 to 760 kbps (maybe try pushing down to 650 kbps) for 720p. 340 kbps is often a struggle for some 480p content, and I need to do more testing to determine what range to target for 360p (guessing I can't go much lower than 300 kbps). Basically I want to end up with content that is both impressively small and impressively good looking, but I will sometimes go with "eh, it looks pretty good". I don't disagree with you that I am overcomplicating it, but I do want to skew things toward maximum compression beyond what most consider a sensible compression/speed balance. Thank you for the suggested baseline. Is there significant efficiency to be gained in specifying the colorspace and limiting the range? Quote:
I'm convinced, I will lower subme to 5. I haven't been specifying qg-size (looks like it was defaulting to 32 in a recent test), so I will go with 16 as a sane value. What is your sense of the time and benefit trade-off if I were to go with 8? Ctu seems content dependent, and like it could be lowered without efficiency loss for something like a complex computer generated scene where every part of the frame is busy and detailed for a vast majority of frames, but it would be beneficial to keep it at 64 for large numbers of frames with a focused subject and minimal to no detail (like a flat color with no gradient at all) in a large part of the frame. Do I have that right? I'm thinking for my goals I should probably lower me-range to 26 for 480p and 360p. I'm undecided on 720p and I feel like I should leave it at the default 57 for 1080p. I can see how it could have a significant effect on speed when I'm using me=sea. Quote:
This is great, I've learned more about H.265 settings since starting this thread than I have in the past three years. Looks like I need to compare a CRF 22 encode with the above suggested baseline with what I have as a best attempt for maximum compression settings: rc-lookahead=60:bframes=16:bframe-bias=5:ref=6:min-keyint=24:me=sea:subme=5:tu-inter=4:tu-intra=4:qg-size=8:deblock=-1:-1:no-sao:colorprim=1:transfer=1:colormatrix=1:range=limited And I need to determine how I feel about lowering ctu and merange in 720p. I think I'll use the Tears of Steel clip from the challenge thread. Last edited by Ischemia24; 2nd August 2019 at 17:00. Reason: Handbrake -> H.265 |
|||
Thread Tools | Search this Thread |
Display Modes | |
|
|