You can not compare this!
If you want to discuss about speed please read and understand this: Voukoder Performance Analysis and then discuss specific measurements in your original forum topic.
I want to discuss after effects specific issues here.
You can not compare this!
If you want to discuss about speed please read and understand this: Voukoder Performance Analysis and then discuss specific measurements in your original forum topic.
I want to discuss after effects specific issues here.
This is about After Effects. There is no beta2 for After Effects.
Please post you voukoder log file. It is in the settings / logfile tab of voukoder.
You may try the proof-of-concept for AfterEffects here: https://github.com/Vouk/voukoder/releases/tag/aex-poc1
It would be great to get some feedback.
From what I've read the default value "normal" is the recommended one. (Unless you are creating a BluRay compatible output)
This document describes how Voukoder processes data and how it measures the time needed to perform each step of an exporting process.
A host application ("Host") is the application the plugin runs in. In example Adobe Premiere or VEGAS Pro.
(UNDER CREATION)
First we need to talk about some basic facts.
It is quite complicated to analyze performance issues for various reasons ...
In the end most of you are interested in the encoding speed, how many frames per second (fps) can be exported. Let's see how we're calculating the average fps at the end of the encoding process. This value is the average time (latency) of all encoded frames. So lets take a look at a single frame like the line from the log file:
[12:31:35] Frame #920: vRender: 31 µs, vProcess: 9 µs, vEncoding: 13274 µs, aRender: 106 µs, aEncoding: 806 µs, Latency: 14378 µs
The exporting process is basically executing the tasks above from the left to the right:
Render > Process > Encoding
These three steps can be broken down to "substeps":
Rendering
Processing
Encoding
Each of these steps take a certain amount of time. In the example above rendering the frame takes like 31 µs. That is pretty fast. So if one frame takes like 31 µs we could theoretically have like 32258 frames per second (1 / time(s)), right? Awesome but until now the Host only rendered the frame. It has not been process, encoder nor written to disk yet. All the times of each step add up to each other and the export of a single frame can never be faster than the previous steps.
| Step | Time | Sum | Theoretical fps |
|---|---|---|---|
| Render video frame | 31 µs | 31 µs | 32258 fps |
| Process video frame | 9 µs | 40 µs | 25000 fps |
| Encoding video frame | 13274 µs | 13314 µs | 75 fps |
| Render audio frame | 106 µs | 13420 µs | 74 fps |
| Encode audio frame | 806 µs | 14226 µs | 70 fps |
| Total frame-to-frame latency | - | 14378 µs | 69 fps |
That's how you'll get like 69 fps in the end (if all frames of the project have an average of 69 fps). But what if your project is UHD and has lots of filters and effects? Your log could look a bit different because the Host has a lot of work to render all the effects and text layers and images before handing it over to Voukoder:
[22:14:01] Frame #515: vRender: 12891µs, vProcess: 110 µs, vEncoding: 2912 µs, aRender: 118 µs, aEncoding: 791 µs, Latency: 16972 µs
The table above would look like this:
Step |
Time | Sum | Theoretical fps |
|---|---|---|---|
| Render video frame | 12891µs | 12891 µs | 77 fps |
| Process video frame | 110 µs | 12991 µs | 76 fps |
| Encoding video frame | 2912 µs | 15903 µs | 62 fps |
| Render audio frame | 118 µs | 16021 µs | 62 fps |
| Encode audio frame | 791 µs | 16812 µs | 59 fps |
| Total frame-to-frame latency | - | 16972 µs | 58 fps |
In this example you see a slightly lower fps. But while you could improve the first example with add hardware encoding (GPU) encoding to accelerate the "Encoding video frame" step, it would not be possible in the second example. The percentual GPU usage would be very low. This means Voukoder is not able to accelerate this.
You will have this metrics only when having video encoding enabled.
The time the host application requires to render the frame. Voukoder has no impact on this (with a few exceptions) as all of this happens in the host application.
CUDA can have a significant impact on vRender depending on your project structure. It will most likely limit your export speed to a certain value (You can test this with the VRPT-Tool), but it will also accelerate your effects and filters.
A a rule of thumb: If your project makes use of lots of effects and filters turn CUDA on. If not, turn it off. It can be changed in the project settings.
The Host can use the hardware decoding support of an integrated GPU on Intel systems. This sounds like it would be faster than CPU decoding but this is not the case in general. On slower CPUs this could have a positive effect, on faster CPUs it might be better to disable it. Again, you can test it with the VRPT-Tool which is faster on your system / project.
This is the time Voukoder needs to prepare the frame date for using it with FFmpeg/libav. With YUV 4:2:0 (8 bit) data this value should be pretty low as no conversion is necessary. With other pixel formats the time needed for this task could increase drastically.
After rendering and processing the raw frame data this is the final step. The value of vEncoding is the time the software- or hardware encoder needs to compress the frame and write the frame to disk. This also includes the processing of all video filters.
You will have this metrics only when having audio encoding enabled.
Just like vRender this is the time the host application needs to render the audio samples. It also is the combined value of several tasks:
Voukoder has no impact or acceleration possibilities on this value.
After rendering the raw sample data this is the final step. The value of aEncoding is the time the encoder needs to compress the data and write the it to disk. This also includes the processing of all audio filters.
The overall end-to-end time a frame needed to export. This includes all steps above as well as the required glue code. 1 / Latency (in seconds) equals the frames per second.
It should be also possible to use ffmpegs filter for that
you can encode HDR conform
And how do you do that?
Edit: It seems they patch the stream afterwards. So it is correct that NVENC does not support it. People just modify the files afterwards.
I support your job!
Thanks for your support!!
I don't know how StaxRip does it.
Currently I have these options available:
Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
General capabilities: delay hardware
Threading capabilities: none
Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda d3d11
h264_nvenc AVOptions:
-preset <int> E..V..... Set the encoding preset (from 0 to 11) (default medium)
default E..V.....
slow E..V..... hq 2 passes
medium E..V..... hq 1 pass
fast E..V..... hp 1 pass
hp E..V.....
hq E..V.....
bd E..V.....
ll E..V..... low latency
llhq E..V..... low latency hq
llhp E..V..... low latency hp
lossless E..V.....
losslesshp E..V.....
-profile <int> E..V..... Set the encoding profile (from 0 to 3) (default main)
baseline E..V.....
main E..V.....
high E..V.....
high444p E..V.....
-level <int> E..V..... Set the encoding level restriction (from 0 to 51) (default auto)
auto E..V.....
1 E..V.....
1.0 E..V.....
1b E..V.....
1.0b E..V.....
1.1 E..V.....
1.2 E..V.....
1.3 E..V.....
2 E..V.....
2.0 E..V.....
2.1 E..V.....
2.2 E..V.....
3 E..V.....
3.0 E..V.....
3.1 E..V.....
3.2 E..V.....
4 E..V.....
4.0 E..V.....
4.1 E..V.....
4.2 E..V.....
5 E..V.....
5.0 E..V.....
5.1 E..V.....
-rc <int> E..V..... Override the preset rate-control (from -1 to INT_MAX) (default -1)
constqp E..V..... Constant QP mode
vbr E..V..... Variable bitrate mode
cbr E..V..... Constant bitrate mode
vbr_minqp E..V..... Variable bitrate mode with MinQP (deprecated)
ll_2pass_quality E..V..... Multi-pass optimized for image quality (deprecated)
ll_2pass_size E..V..... Multi-pass optimized for constant frame size (deprecated)
vbr_2pass E..V..... Multi-pass variable bitrate mode (deprecated)
cbr_ld_hq E..V..... Constant bitrate low delay high quality mode
cbr_hq E..V..... Constant bitrate high quality mode
vbr_hq E..V..... Variable bitrate high quality mode
-rc-lookahead <int> E..V..... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
-surfaces <int> E..V..... Number of concurrent surfaces (from 0 to 64) (default 0)
-cbr <boolean> E..V..... Use cbr encoding mode (default false)
-2pass <boolean> E..V..... Use 2pass encoding mode (default auto)
-gpu <int> E..V..... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
any E..V..... Pick the first device available
list E..V..... List the available devices
-delay <int> E..V..... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
-no-scenecut <boolean> E..V..... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
-forced-idr <boolean> E..V..... If forcing keyframes, force them as IDR frames. (default false)
-b_adapt <boolean> E..V..... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
-spatial-aq <boolean> E..V..... set to 1 to enable Spatial AQ (default false)
-temporal-aq <boolean> E..V..... set to 1 to enable Temporal AQ (default false)
-zerolatency <boolean> E..V..... Set 1 to indicate zero latency operation (no reordering delay) (default false)
-nonref_p <boolean> E..V..... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
-strict_gop <boolean> E..V..... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
-aq-strength <int> E..V..... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
-cq <float> E..V..... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
-aud <boolean> E..V..... Use access unit delimiters (default false)
-bluray-compat <boolean> E..V..... Bluray compatibility workarounds (default false)
-init_qpP <int> E..V..... Initial QP value for P frame (from -1 to 51) (default -1)
-init_qpB <int> E..V..... Initial QP value for B frame (from -1 to 51) (default -1)
-init_qpI <int> E..V..... Initial QP value for I frame (from -1 to 51) (default -1)
-qp <int> E..V..... Constant quantization parameter rate control method (from -1 to 51) (default -1)
-weighted_pred <int> E..V..... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
-coder <int> E..V..... Coder type (from -1 to 2) (default default)
default E..V.....
auto E..V.....
cabac E..V.....
cavlc E..V.....
ac E..V.....
vlc E..V.....
-b_ref_mode <int> E..V..... Use B frames as references (from 0 to 2) (default disabled)
disabled E..V..... B frames will not be used for reference
each E..V..... Each B frame will be used for reference
middle E..V..... Only (number of B frames)/2 will be used for reference
-a53cc <boolean> E..V..... Use A53 Closed Captions (if available) (default true)
Alles anzeigen
I don't see the HDR relevant options here.
You can disable pre compiled headers and remove that files.
Thanks, I will investigate that.
To my knowledge NVENC does not support HDR yet.
I don't see any HDR encoder options.
Can you please also send a MediaInfo of the source-file and the exported file?
Please post your measurements showing this color shift.
Setting a level does not improve the quality. It just limits the feature set of the encoder for hardware decoders (i.e. TV, PlayStation, Phones, DVD,...). These device just comply up to a certain levels. If YouTube (or similar) is your target NEVER use a limit.
Does it work if you disable the level? (Uncheck it)
Currently Voukoder can use only encoders supported by FFmpeg. Can SurCode be used with FFmpeg?
Fixed and released as 2.0.8 (Hotfix)
Released Voukoder 2.0.8
Hotfixes:
Changes: