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.
(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)
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.
A little late with this post;
To explain why your CPU is still being used 100% (or near there), it is because audio is not GPU-accelerated and is being done by the CPU. Also, some of the data still has to be processed by the CPU- the GPU is only accelerating the process through the NVENC block on your GPU; this block is actually a very small portion of your GPU and does not relate to 3D rendering, and thus your GPU reports that it is using a very small amount of its total power.
Copy link to clipboard
Thank you for taking the time to develop this encoder. I followed all the directions and the videos you put up on YouTube, but somehow when I export a video from Premiere to AME and go through all the settings it only wants to export it as an AAC. Once in AME if I click on the file that's in line to be encoded to try to change the settings the "Export Video" option isn't there and the NVENC_export format is not there. It is there in Premiere but not AME. I did put the nvenc plugin in the Premiere/Plugins/Common folder and also the same plugin in the MediaEncoder/Plugins/Common folder too but somehow it's not working. so no matter what I do if I export a video it always just gives me the AAC. I've also tried both MP4 and TSmuxer but the results are the same.
What am I doing wrong?
BTW I have a Quad-core 920 with a Nvidia GeForce GTX 660 Ti
Copy link to clipboard
For any of you with questions try this video:
It's a bit shorter than the installation tutorial so i thought it might be useful.
Ok, followed the video and listened to the instructions, reinstalled GPAC and videos come out fine and lightning fast (though only through premiere pro). However, i cannot change the resolution even by a single pixel in either direction or it throws up an error. Why is this?
(Same limitations as previous versions.)
(1) If MPE hardware-acceleration (CUDA) is enabled in Premiere Pro or Media Encoder, then nvenc_export cannot resize the source-video to a different output-size. You must make sure the source-video size and output-video size are the same, otherwise the video-encode will fail. (Alternatively, turn off MPE hardware-acceleration.) I suspect this is caused by Adobe's hardware MPE-renderer not supporting resize-operations on the PrPixelFormat_YUV_420_* surfaceformat, which is requested by nvenc_export.
Question already been answered. As the tutorial says read the page.
Figures. The one paragraph I did skip over did have the answer. Sorry about that. I wonder if it's worth googling to find a way to either work around this road bump or getting a plugin that would allow Adobe to support resize operations with all this stuff enabled...
What version of MP4Box are you using? What files did you pull out of the install folder to get it to work?
The reason why I ask is because the files that I've been exporting are being deleted instantly after Nero does the AAC rendering.
I use Adobe Media Encoder and I was try install NVENC plugin to media encoder by this video tutorial.
I have some questions now. My media encoder detect NVENC_export plugin correctly but I wanna ask you:
1. How I can encode to MP4 container with Media Encoder? I know that I probably need install gpac. So I do it but what next?
2. How I can encode audio to AAC? I know that I probably need download Nero AAC codec. So I do it but what next?
3. How I can set up my custom CBR rate for video and for audio?ä
4. How I can set up my custom video resolution?
Problem is that I found video tutorials only for install this plugin to Adobe Premiere Elements.
Thanks for answers.
Sorry for my not very well english.
Need some help everything was working like it should but I started getting a error and mp4box stop working no mater what I do I download the dev mp4box and that did work I just don't know what to do I'm not using v106 i'm using v107
adobe premiere elements 12 64bit
Thanks so much for making this. I'm using PP & AME CC 2014, with an i7-2600K CPU and a Nvidia GeForce 660 Ti video card.
When using MainConcept, spitting out a 50mbps H.264 encode, I get a ten-minute video rendered thus:
Hi! Thank you for the program. Version 1.01 works good, 1.02 too. But starting from 1.03 till 1.07 there is NO NVENC_export at the Export setting. Can you help me? Thank you.
it function also with premiere pro cc 2014?
Thanks for your efforts
This would be awesome for Macusers too.
Is there any Alternative we Macusers can use?
Maybe someone knows if there is a way to enable Maximum Bit Depth (or 32bpc color) and use this plugin for export?
I'm using Neat Video plugin, and it creates nice gradients in areas where previously was blocky noise.
When i render with default Adobe's H264 exporter (MainConcept) and i enable Maximum Bit Depth in the exporter window,
these gradients remain well preserved.
In NVENC it seems like impossible to let Premiere render effects in 32bpc (i don't see any checkbox),
Maximum Bit Depth checkbox in composition is just ignored during any export anyway.
The encoding result is horrible - gradients produced by NeatVideo in 8bpc are very jagged and ugly.
So i still have to use MainConcept encoder if effects require 32bpc rendering
I select 23.976fps, AME say 23.98 fps. after encoding 1H of video, the resulting video is set to 23.976. if I multiplex it
with the audio that I exported manually from premiere (project is of course 23.976), it is out of sync at the end.
so, I suspect it is working at 23.98 instead of 23.976
- if I use the latest MP4Box it fail silently (and erase the resulting files m4v and .m4a). maybe they changed their command line parameters ?
- NeroAACEnc on the other hand is properly launched and encoding is fine.
it seems that below 15mbps, let say 4Mbps, the result is blocky and hugly no matter I change settings. especially in fade in/out. As all hardware encoders,
good quality with low bitrate seems impossible.
I would like to confirm what droopy6 said, the finishing part in the encoding process fails and all files are just deleted. I tried with default settings and the source material was some HDV (.mpeg). The encoding is lightning fast but I can't get it to work. Is there anything to try? Also, is this same functionality available for Premiere somewhere else, free or paid?
After strictly and carefully follow your steps on youtube video, what i got is an "Assertion failed" (probably from visual studio)
I got everything installed (VS update4, MP4, neroaac, and your plugin -at latest release.
Please help me.
Try reinstall your stuff or windows complete. I had fresh installation with visual studio, few nvidia skds, directx, and few games from steam (they installed some deps). After that i installed adobe premiere with this plugin and all goes well.
I get the exact error, only when trying to export @60fps - it has been working beautifully for me @30fps
Is anyone using this and getting 60fps to work yet?
I found my issue, I just had to select level 5.1
I just discovered this today and was excited to try and get it to work; I can finally be able to use my GTX 970 to render video faster! However, when trying to render a 10 minute video, at 1080p60, using levels 4.1, 4.2, and 5.1, as an MP4 file, I get a weird error.
Anyone know the issue for this?
I'm on Premiere Pro CS6, by the way.
Have you installed the proper version of "Visual C++ Redistributable for Visual Studio 2013 Update 4" ?