Copy link to clipboard
Copied
Hi all,
I have written a 'proof-of-concept' GPU-accelerated H264-encoder for Adobe Media Encoder (CS6). It requires an NVidia 6xx/7xx series "Kepler" GPU (CUDA capability 3.0), and uses the dedicated GPU's builtin hardware-encoder (NVENC) to offload the H264-encoding process from the host-CPU. This software is "proof-of-concept", so it's missing some critical features (no interlaced-video support, no AAC-audio or Dolby AC-3 audio), and of course, it could be buggy! But it's free.
!!!! Disclaimer: NVENC-export is third-party software that is not supported by either Adobe or NVidia. It comes with no warranty -- use at your own risk.
Software/hardware Requirements:
(1)Adobe Premiere Pro CS6 or Media Encoder CS6 (Windows version)
Sorry, MacOSX is not supported. (NVidia NVENC SDK doesn't support MacOSX.)
(1)NVidia Kepler GPU <GKxxx> with 1GB VRAM or more (GTX650 or above, GT650M or above)
(Sorry, NVidia Fermi <GFxxx> is NOT supported, it doesn't have the NVENC hardware feature)
Note,if you have MPE-acceleration enabled, keep in mind the NVENC-plugin consumes some additional VRAM because it uses your GPU to perform H264-encoding.
Strongly recommend a 2GB card
(2) Microsoft Visual C++ 2010 SP1 x64 redistributables
(download this from Microsoft's website)
Installation instructions:
In Adobe Premiere Pro CS6:
(1) On your system, locate the installation-directory for Premiere Pro CS6.
Usually, this is C:/Program Files/Adobe/Adobe Premiere Pro CS6
(2) Copy the included file Plug-ins/Common/nvenc_export.prm
to <installation dir>/Plug-ins/Common/
-> To choose the NVENC-plugin in Premiere Pro,
In the format-menu, select <NVENC_export>
In Adobe Media Encoder CS6:
(1) On your system, locate the installation-directory for Media Encoder CS6.
Usually, this is C:/Program Files/Adobe/Adobe Media Encoder CS6
(2) Copy the included file Plug-ins/Common/nvenc_export.prm
to <installation dir>/Plug-ins/Common/
-> To choose the NVENC-plugin in Media Encoder,
in the format-menu, select <NVENC_export>
Performance & quality notes:
(1) How much faster is NVENC-export than Adobe's built-in Mainconcept H264 encoder?
Depends on your PC system. On my test-system, which is ordinary desktop PC with Intel i5-3570K (4-core 3.4GHz), NVENC-plugin is roughly 4x faster than Mainconcept. On a dual-socket Xeon Ivy Bridge-E system, NVENC would probably only be 2x faster (in Media Encoder.)
(2)How does the video-quality compare?
Comparing similar settings/video-bitrate, Mainconcept performs better at lower-bitrates(less artifacts). At medium-high bitrates, NVENC is comparable to Mainconcept.
(3) How does NVENC-export encode the video?
The plugin fetches videoFrames from the Adobe application, then converts the frames from YUV420 to NV12 surface-format (using host-CPU.) Then it passes the converted frames to the NVENC front-end. From here, NVENC hardware takes over, and handles all aspects of the video compression. When NVENC hardware is done, it calls the plugin to output write the elementary bitstream (to the selected filepath.) NVENC-hardware does NOT encode audio, nor does not multiplex the A/Vbitstreams -- this is still done in software (on the host-CPU)
The NVENC hardware block has very little CPU-overhead. But since video-encoding is just 1 step in the entire Adobe rendering path, CPU-usage will likely still be quite high when using NVENC-plugin.
(4) What's the maximum-size video NVENC-export can handle?
H264 High-profile @ Level 5.1, which works out to roughly 3840x2160 @ 30fps. (Note the actual encoding-speed will probably be less than 30fps.)
(5) How fast is the NVENC-export hardware in Kepler GPU?
Assuming the Adobe application host is infinitely fast (i.e. can send video to plugin in zero-time), NVENC-hardware will encode High-profile (CABAC, 2 refframes, 1-bframe) 1920x1080p video @ ~100fps. At 3840x2160p (4k video), the hardware encode-speed drops to roughly 20-25fps. That is still faster than a desktop PC.
NVENC-speed is generally same across the Kepler family - the high-end Geforce GTX Titan (or GTX780) is no faster than the entry-level Geforce GTX650, because all Kepler models share the same NVENC hardware-block, which is totally separate and independent of the GPU's 3D-graphics engine.
In premiere Pro 6, MPE acceleration will greatly affect how quickly Adobe can render video to the exporter. So a more powerful Kepler GPU will probalby complete projects faster than a less powerful one (up to NVENC's performance ceiling.) For more info, please refer to NVidia's NVENC whitepaper at their developer website (public)
(6) I have a multi-GPU setup, can I encode with multiple GPUs?
No, NVENC targets and uses only a single physical GPU. (You can choose which one.)
Known limitations and problems:
NVENC-plugin is a 'proof-of-concept' program -- it is not a finished product. So it's missing some features, and other things are known to be broken:
no AAC or Dolby-Digital
no MPEG-4 muxing (*.MP4)
(To fix: Select a different codec, then re-select NVENC_export.)
Sorry, NVENC hardware was introduced with NVidia's Kepler family (2012) Anything older than that will NOT work with the plugin.
Copy link to clipboard
Copied
That did the trick! THANKS!
Trying it out now.
Copy link to clipboard
Copied
Win7 PremereCC2015: the plugin isn't visible in any combinations
Plugin Loading.log:
Loading C:\Program Files\Adobe\Adobe Premiere Pro CC 2015\Plug-ins\Common\nvenc_export111j2.prm
Loading from disk...
The library could not be loaded.
but for v1.09:
Loading C:\Program Files\Adobe\Adobe Premiere Pro CC 2015\Plug-ins\Common\nvenc_export (109).prm
The registry tells us not to cache so the plugin will be loaded from disk.
Loading from disk...
This plugin was recognized by loader d3092dcf-904a-4a97-b4ca-66aed7540d57.
Copy link to clipboard
Copied
Try the j3 version, it's built against the VC2013 runtime (to be consistent with nvenc4everyone's builds). The j2 build requires the VC2015 runtime to be installed. There are links to both in my previous post.
Copy link to clipboard
Copied
with v.j3 the situation is the same. All MSVC++ runtimes (2005,2008,2010,2012,2013,2015) are installed...
Although I see another reason for this:
Loading C:\Program Files\Adobe\Adobe Premiere Pro CC 2015\Plug-ins\Common\nvenc_export111j3_64.prm
Invalid registry entry found so the plugin will be loaded from disk.
Loading from disk...
The library could not be loaded.
Copy link to clipboard
Copied
I don't think the registry issue is the culprit, either way it tries to load the plugin from disk. But, you can try deleting the plugin's regkey and restarting the app. The regkey is at: "HKEY_CURRENT_USER\SOFTWARE\Adobe\<product>\<version>\PluginCache.64\<locale>\<plugin file name>" where <product> is "Premiere Pro", "Premiere Elements", or "Adobe Media Encoder". Based on your log, and if your locale is en_us, it would be: "HKEY_CURRENT_USER\SOFTWARE\Adobe\Premiere Pro\9.0\PluginCache.64\en_US\nvenc_export111j3_64.prm"
Copy link to clipboard
Copied
Registry' record for 1.11 not contain any data at all, only name:
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-2148478521-4284035374-2828448764-1000\Software\Adobe\Premiere Pro\9.0\PluginCache.64\en_US\nvenc_export111j3_64.prm]
but for 1.09:
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-2148478521-4284035374-2828448764-1000\Software\Adobe\Premiere Pro\9.0\PluginCache.64\en_US\nvenc_export (109).prm]
"HasPipl"=dword:00000000
"Ignore"=dword:00000000
"DoNotCache"=dword:00000001
"DateLow"=dword:02eca428
"DateHigh"=dword:01d03f78
[HKEY_USERS\S-1-5-21-2148478521-4284035374-2828448764-1000\Software\Adobe\Premiere Pro\9.0\PluginCache.64\en_US\nvenc_export (109).prm\Exporter 0]
"Plugin Factory Guid"="d3092dcf-904a-4a97-b4ca-66aed7540d57"
Registry records deleting don't help, new record is empty again.
If I copy it from 1.09 I get the next:
Loading C:\Program Files\Adobe\Adobe Premiere Pro CC 2015\Plug-ins\Common\nvenc_export111j3_64.prm
The modification date has changed so the plugin will be loaded from disk.
Loading from disk...
The library could not be loaded.
Copy link to clipboard
Copied
Other than the MSVC runtime the only other dependencies are the NVIDIA driver and D3D9. Since 1.09 works for you, you obviously have d3d9, but make sure you have at least version 359.0 of the NVIDIA driver (according to nvenc4everyone's release notes for 1.11). If that doesn't work I don't know what else you could try.
Copy link to clipboard
Copied
I test v1.11 with 361.43 and 361.75 drivers.
Driver gives correct export without errors but the plug-in has to appear in the list with any driver's version.
I mean that 1.11 was created for win8/win10 only. Nobody could start it on win7.
The library could not be loaded.
Copy link to clipboard
Copied
Sorry, I don't know how else to help you. I'm running 361.43 drivers on Win10 and everything works fine. Unfortunately I don't have access to a Win7 machine with an NVidia video card, so I can't try it out under a debugger. Maybe nvenc4everyone or irisb50359875 could.
Best of luck.
Copy link to clipboard
Copied
can you recompile 1.09 with NVENC 6.0 (for new nvidia drivers)? so we will be able to verify that the problem is not in the nvenc_encoders code.
Copy link to clipboard
Copied
Sure, here's 1.09 recompiled against the latest NVENC libraries: nvenc_export 1.09 - j1.zip
If someone who can't load 1.11 wants to try this, it should give a good indication if the problem originates from a code change in 1.11, or just the use of the newer NVENC libraries.
Copy link to clipboard
Copied
With old driver (350.12) 1.09 j1 OK. It means that new NVENC libraries OK too?
New driver 361.75 get error because it contain another cuda version.
Copy link to clipboard
Copied
nvenc_export 1.09 - j1 normal work with 347.88
with 361.75 drivers nvenc_export is loaded,
while export gives an error message
after "Ignore", mp4box gives error, export to m4v is ok
Copy link to clipboard
Copied
It's normal - NVENC1.09 was created for work with CUDA 7.0, nvidia driver 361.75 has CUDA 8.0.
In my case NVENC 1.11 get error with not video but with systems or premere pro.
Copy link to clipboard
Copied
Sure, here's 1.09 recompiled against the latest NVENC libraries: nvenc_export 1.09 - j1.zip
If someone who can't load 1.11 wants to try this, it should give a good indication if the problem originates from a code change in 1.11, or just the use of the newer NVENC libraries.
Please note that the recompiled 1.09 x64 is NOT the new but has a 2/2/2015 10:09pm timestamp. That's the same timestamp as the orginal 1.09 distribution had.
Copy link to clipboard
Copied
Thanks.
I am ex-programmer but I haven't c++ skills and there is no my wish to understand reason on code's level in this case.
Good luck!
Copy link to clipboard
Copied
HI,
The link doesn't work and I have the same problem of outsync. Can you send me the working link
Copy link to clipboard
Copied
1 - A title file from begginin to the end of the video, exactly, and insert just one point of opacity: This prevents for titles or photos to appear and disappear rapidly in export, the time changes and out of sync audio no longer exists.
Copy link to clipboard
Copied
Rock_BR 3 mars 2017 22:14 (en réponse à Manendra)
"1 - A title file from begginin to the end of the video, exactly, and insert just one point of opacity:"
Thank you for this workaround
It work also with an effect layer over all vidéos, and just one keyframe in opacity.
Olivier
Copy link to clipboard
Copied
First of all, a reminder that i own a GTX 970 and high end PC
Well, since a format i had today for reasons, i've re-downloaded Premiere Pro 2017 and Media Encoder 2017 and obviously they were the latest versions... Last time i've used premiere and media encoder , Premiere was updated, but not media encoder, and still encoding and the Nvenc function worked...Ofcourse Nvidia drivers were to the latest version too
Now today, again, all updated to the latest version (sadly from adobe's sidE) and did the same thing as always:
1.Copy the system32 and sys64 folders in Windows folder
2.Copy the nvenc_export.prm for that 1.12Wc_W7 revision to both premiere pro and media encoder folders
3.Install GPAC 0.7.0 april 2017 (Before it was 0.6.1)
4.Copy the qaac64 audio encoders thingy to C:
5.Start a project on premiere and do the magic of mounting
6.File->Export
7.Now here's the issue. I choose the Nvenc_export 1.12Wc_W7 option and then the mp4box and qaac64 buttons respectively... The issue?.. No sliders nor tabbed options are avaliable for encoding settings etc, ...And why?.. because...
Excuse me?. All this time with the same settings etc etc, and now because Media Encoder decided to be funny and updated to the latest version, this is what i get?..
Is there a solution to this issue?...
Copy link to clipboard
Copied
Since i can't edit the previous post due to the site's own Flash issues, to insert the image properly, i'm linking the pic here
https://image.prntscr.com/image/0d95baf9b092467db5a53a81b05dac63.png
Still, hopefully there's a new version of the nvenc export to jump over the latest patches of everything
Copy link to clipboard
Copied
I seem to be having issues with MP4box, I can get AME CC to encode the video as I can see it in the preview but once it comes to actually creating the file MP4box crashes no matter what version I use.
I'm using the latest x64 version of MP4box
NVENC 1.09
359.06 drivers (361 has a monitor hz bug)
Windows 10
Copy link to clipboard
Copied
try 1.11
the 1.09 outdated for your configuration
Copy link to clipboard
Copied
I tried that and couldn't seem to get it recognized, I'll try again but 1.11 shouldn't fix the issue with MP4box will it?
Copy link to clipboard
Copied
Alright I seem to have it working however there are some "jaggies" or pixelation (pic posted) of high motion items specifically the steering wheel, and gauges compared to the rest of the video. I tried raising the bitrate but that didn't do much, any specific settings I should try?. Footage is 1080/60
using a the MAGICYUV codec