Please post you voukoder log file. It is in the settings / logfile tab of voukoder.
Beiträge von Vouk
-
-
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)
-
Analyzing the Performance
This document describes how Voukoder processes data and how it measures the time needed to perform each step of an exporting process.
Terms
A host application ("Host") is the application the plugin runs in. In example Adobe Premiere or VEGAS Pro.
(UNDER CREATION)
First ...
First we need to talk about some basic facts.
- Voukoder does not necessarily do exports faster! It simply provides access to different encoders. These give you the possibilities to choose between the three encoding priorities. Encoding speed or video quality or filesize. You can't have all together!
- Voukoder does not speed up rendering! If the host application is slow with rendering / delivering frames Voukoder can't make it go faster and it is actually limited to that speed then. No matter how fast any encoder / GPU is!
It's not that easy ...
It is quite complicated to analyze performance issues for various reasons ...
- There are millions of different computer configurations and the slightest difference could have an impact on the measurements
- Comparing encoders is complicated as hell! One can not simply say "Voukoder is better than xyz!", because:
- What do you compare against? Encoding speed? File size? Visual quality?
- What is happening? FFmpeg will always be faster than Voukoder because Voukoder includes the rendering part of the Host.
- What settings or presets do you use? Are the settings optimized for the CPU / GPU?
- ...
Breaking it down
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:
Code[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
- Single, compressed frames will be acquired from the demuxer
- Uncompressing these frames
- Layers, Effects and Transitions get rendered to a single, uncompressed frame
Processing
- Depending on the host application pixel format conversions need to be done
- Maybe images need to be vertically flipped
Encoding
- Maybe small, secondary pixel format conversions are required
- The filter chain will be processed
- The final frame gets encoded and will send to the muxer (and to disk)
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:
Code[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.
Video metrics
You will have this metrics only when having video encoding enabled.
vRender
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.
- Decoding the source frame to uncompressed values
- Applying filters, effects and all layers
- Converting it to the requested pixel format
CUDA
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.
Hardware decoding
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.
vProcess
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.
vEncoding
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.
Audio metrics
You will have this metrics only when having audio encoding enabled.
aRender
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:
- Decoding the source audio to uncompressed values
- Applying filters, effects and all layers
Voukoder has no impact or acceleration possibilities on this value.
aEncoding
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.
Latency
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:
Code
Alles anzeigenEncoder 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)
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:
- (libfdk_aac) Fixed encoder config sigh
Changes:
- Added more german translation
-
You can use it with Media Encoder in AfterEffects. I am still working on a native AfterEffects plugin.
-
It is still a premiere issue. vRender is Premiere.. everything right from it voukoder.
btw, please don't copy logfiles as images. There is a button "Copy to clipboard."
Did you ask the Adobe support?