Done! Added qmin and qmax to h264_nvenc and hevc_nvenc!
Beiträge von Vouk
-
-
Fixed in 2.3beta5
-
Okay, seems there is another issue with zscale.
It delays the export by 1.4 seconds per frame. That's not really usable.
-
Yes, its a less obvious for advanced uhd/bt2020 users but also less confusion for yuv 420 hd/rec709. It depends on the use case. I think most users won't ever use colorspace conversion (and if the need it they can use that filter) so in my opinion it is the right way.
Might also be a good idea to bring back the x265 settings in this case too.
They will be back! Added them to the config already.
-
I am thinking about removing these dropdown boxes again and just extend the regular zscale filter (Configure > Filters > Add filter (zscale) ) to support all the color space options. It'd be more consistent, I guess.
That'd mean that there is also no need for the conversion checkbox, nor any mapping of option values. You can just add that filter if you need it.
-
I'll switch to zscale before any doing any release. As these settings are saved together with a project I'd like to prevent any conflicts like "bt709" vs "709".
Please confirm zscale has all the options you need.
-
I investivated this with different encoders:
This happens with AAC, AC-3 and DTS. The others work fine.
I am on it.
P.S.: The different offset does not matter! When playing video and audio in a media player it will sync this correctly using the display timestamp (DTS).
P.P.S.: VEGAS and Premiere are not affected.
-
Theoretically yes, but it does not use FFmpegs standard values i.e. "709" instead of "bt709". Makes it complicated again to map all of these. I'll think about this later.
-
Fixed taking this value from the project settings.
-
-
You could still talk with the ff guys and ask for that feature to be implemented
-
It seems ffmpeg also supports HLG (https://github.com/FFmpeg/FFmpeg/…2083246ca598fce) but is not listed in the documentation.
It was added years ago under the value "arib-std-b67" for trc, could you also add it ?
Unfortunately the "colorspace" filter does not support "arib-std-b67" (vf_colorspace.c:983).
-
-
You're not doing anything wrong. Alpha channel support is still on my TODO-list.
-
Contents
- What are the best settings to encode h264 with NVIDIA gpus?
- Why is my CPU and my GPU not working at 100%?
- I do not see any NVENC encoders in the dropdown, what's wrong?
- How can I see live encoding stats? / How can I see how many NVENC sessions are in use?
- I don't see Voukoder in VEGAS.
1. What are the best settings to encode h264 with NVIDIA gpus?
There is no such thing as the best settings. This depends on the kind of your project and also on you hardware setup. Here are some basic facts:
- Don't use bitrate based rate controls anymore (unless you are aiming for a specific filesize), use constant or dynamic quantizers instead!
- You have to decide whats important to you: speed, quality or small filesize. You can't have all. You will use gpu encoders for speed only. If you want the best quality use the x264 encoder instead.
These settings are a good start:
If you want to tweak it a little more click "Show advanced options" and choose:
- RC lookahead: 16
- Number of B-Frames: 3
2. Why is my CPU and my GPU not working at 100%?
There is always a bottleneck. This can be either CPU, GPU or even your harddrive. In most cases CPU based encoders (i.e. x264, x265, ...) use almost 100% of the CPU. Other encoders (i.e. VP9) don't parallelize very well and use less CPU power.
GPUs are known to be pretty fast, but they can only encode what has been rendered by the NLE (i.e. Premiere, VEGAS). So if the NLE is slow the GPU has to wait and thus has a less utilization.
Read this for more details on this topic: Voukoder Performance Analysis
3. I do not see any NVENC encoders in the dropdown, what's wrong?
There can be many reasons for this.
- You need to have an NVENC compatible graphics card. (See: https://developer.nvidia.com/video-encode-d…-support-matrix)
- You need to have at least one encoder session available. In my case Premiere CC 2017 used all encoder sessions for itself, so CC 2017 did not work. Please use the latest CC 2018 version. CS6 did work, tho!
- Close all other software using NVENC (i.e. OBS)
- Update your video card drivers (418.81 or later required)
As voukoder is using FFmpeg inside you should also try to use NVENC with FFmpeg. If this is also not working the issue is not an Voukoder / FFmpeg issue:
ffmpeg.exe -loglevel debug -f lavfi -i testsrc -pix_fmt yuv420p -c:v h264_nvenc -t 10 test.mp4
You can download a windows build from i.e. https://ffmpeg.zeranoe.com/builds/
4. How can I see live encoding stats? / How can I see how many NVENC sessions are in use?
Open a command prompt and type:
cd "c:\Program Files\NVIDIA Corporation\NVSMI"
nvidia-smi.exe encodersessions
5. I don't see Voukoder in VEGAS.
This can happen for various reasons.
- Make sure you have installed the latest version of the Connector for VEGAS.
- Voukoder is listed here: Help > About > Components
- Normally Voukoder should be shown now as a Format in File > Render as
If you still don't see it try to start VEGAS while holding down CTRL + SHIFT. Please try to reset VEGAS here.
-
-
So for other encoders it would be like this:
- Premiere is set to rec709
- In Voukoder you would set the dropdown boxes to rec2020 but without any conversion, right?
In that case we could also do this with x265 and don't need the VUI options, right?
-
Okay, so I would propose something like this:
- Im the Video tab in premiere you can only select between rec601 and rec709. The default setting is rec709 as most people will work with HD projects in these days. This would also be the setting to use in your case.
- In Voukoder you would have additional dropdown boxes for Color Range, Color Space, Color Primaries and Transfer Characteristics. These will be defaulted to the setting in premiere. So if premiere is set to rec709 it will appear as default. Color Range will be defaulted to the premiere setting which is Limited by default.
- As Voukoder and premiere are set to the same values no color space conversion will be done. In your case you would just set the VUI flags in the x265 configuration to some rec2020 values
In my opinion this would be the best way. What do you think?
-
Maybe what I would suggest is leave the drop down as it is when the user first opens the Premiere Export page, but once they select bt2020nc or bt2020c, then two additional dropdowns appear for transfer fuction and primaries, with st2084 and bt2020 as defaults. I think most people dealing with bt2020 color will have some familiarity with those concepts, but they most likely won't be necessary for rec709 or rec601 formatted videos.
I think about adding 3 dropdown boxes to voukoder. The most common values will be preselected. Reason for this that these values are independent from premiere and need also to be set when using an other NLE (i.e. VEGAS)
I fear those filters above will still cause a conversion.
Filters will only be applied when the frame data from the NLE differs to the output setting.
Examples:
- premiere delivers rec709 limited - output is set to rec709 limited -> No Conversion
- premiere delivers rec601 limited - output is set to rec2020 something -> Conversion
Due to the fact that premiere will never deliver rec2020 there will be always a conversion. There needs to be a ruleset defined.
-
Currently there is only the the color space dropdown box in premiere:
This defines in what way I request the framebuffer from premiere. There are two possibilities:
- rec709 based
- non-rec709 based (I assume rec601?)
At this moment it also defines the target colorspace of the exported project:
Code
Alles anzeigen// Color space switch (videoContext.codecContext->colorspace) { case AVColorSpace::AVCOL_SPC_BT470BG: filterconfig << ":space=bt470bg:trc=gamma28:primaries=bt470bg"; break; case AVColorSpace::AVCOL_SPC_SMPTE170M: filterconfig << ":space=smpte170m:trc=smpte170m:primaries=smpte170m"; break; case AVColorSpace::AVCOL_SPC_BT709: filterconfig << ":space=bt709:trc=bt709:primaries=bt709"; break; case AVColorSpace::AVCOL_SPC_BT2020_CL: filterconfig << ":space=bt2020ncl:trc=smtpe2084:primaries=bt2020"; break; case AVColorSpace::AVCOL_SPC_BT2020_NCL: filterconfig << ":space=bt2020ncl:trc=smtpe2084:primaries=bt2020"; break; }
For rec601 and rec709 it is quite simple. But the question is: Are we going to have that many of possible combinations of rec2020 that I need to separate this into two parts:
- In premiere to chose between rec601 and rec709. This will only define the pixel format that I get back from premiere
- In the voukoder dialog add 3 dropdown boxes to select space, trc and primaries.
I'm not sure if I should do this. As I'd like to keep it as simple as possible. Is it necessary?
About the VUI flags (x265 options)
I will add them back to the advanced settings. These are advanced settings anyway and should be set only by users who know what they're doing. Still, what will will happen if the trc is set to SMTPE2084 and the VUI is set to bt2020-10? I don't know.