-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Setting HW Accel to "nvenc" when using x265 does not set the encoder to "hevc_nvenc" as expected #41
Comments
Thanks for finding this bug, it was a typo in the code, causing it to skip x265. I've released an update. Press the arrow button in Axiom to update through PowerShell, or download from here |
There is still a bug. The "fix" sets the encoder as "x265_nvenc", but for x265 the codec should be set to "hevc_nvenc". |
I see, the HWAccel section had a some other problems with it. I've released an update. cuvid nvenc cuvid+nvenc |
There is still an issue with cuvid and cuvid+nvenc. Neither produce proper command lines for me. Cuvid is a decode-only acceleration, so -c:v hevc_cuvid has to appear before the input file. The output codec should be just the non-accelerated libx265, for example. Cuvid+NVENC - is this even a legal usage? I can't get it to work with any command line in my FFMPEG. |
I'll fix |
Does this look correct? dxva2 (decode)
cuda (decode)
cuvid (decode)
or
nvenc (transcode)
nvenc+cuda (transcode)
qsv (transcode)
Resources: |
I redid a lot of the code for HW Accel. I released the update for you to test.
|
The Zeranoe ffmpeg builds (I use the static ones) have all the hardware support built in. CUVID Decode: Omit the "-hwaccel cuvid". With CUVID you just need to know the input codec and to speciffy the correct cuvid decoder on the command line. It's kind of dumb, actually. In fact the whole hardware accel command line system in ffmpeg is dumb in that different types of acceleration use completely different command line paradigms. I was mistaken about cuvid+nvenc not being legal. It works. In fact, I can make a command line that works for all the decode-only hardware accelerations and also works with nvenc encoding acceleration: cuvid+nvenc dxva2+nvenc I cannot figure out a way to get qsv and nvenc to work together. I would suggest if you want to support decode-only accel that you split up the decode hardware accel and the encode hardware accel into two settings. There might have to be some glue logic to forbid combinations that don't work. |
For what it's worth, I put in an enhancement ticket with ffmpeg to clean up their command line: https://trac.ffmpeg.org/ticket/8666#ticket I don't hold out much hope, but we'll see. |
When trying to use I might remove How does this look for splitting HW Accel options into 2 parts? Decode
Transcode
Combinations
|
I've released an update with some new options:
These changes could introduce new bugs, you will have to test it out and let me know how it works. Certain HW Accel options may need the required Intel/Nvidia/AMD hardware. https://github.com/MattMcManis/Axiom/releases See a related issue here #42 (comment) |
Just found this interesting insight @ StackExchange: Notes on encoding with the QSV encoders:
See how the hardware device for use with MFX sessions has been initialized ( Recommended for further reading: The Advanced Video options section on FFmpeg wiki. The example above demonstrates the use of the Another example, showing the use of the
Take note that both examples above will use the constant bitrate control (CBR) method in MFX, as shown in the console log: Rate control, similar to how the VAAPI implementation governs it, is driven by the parameters Observe how we call up the
The error message may seem ambiguous at first, but it stems primarily from mapping invalid options to the underlying MFX library, such as an unsupported pixel format. The extra argument Hope that helps/inspires ! |
Hi!
I noticed that with nvenc on x264 I got an encoding framerate >100fps, while with x265 the performance was an abysmal ~15 fps.
The issue: on x264 with HW Accel set to
nvenc
, the program properly sets the encoder toh264_nvenc
, while on x265 the encoder is always set tolibx265
. I verified this by manually changing the encoder in the generated script tohevc_nvenc
and this resulted in good encoding performance similar to x264 with nvenc enabled. Hopefully this is an easy fix.I am using version 1.7.9.1-Alpha.
Best regards,
Henri
The text was updated successfully, but these errors were encountered: