Skip to main content
June 28, 2013
Question

NVidia GPU-accelerated H264-encoder plugin, ready for public testing

  • June 28, 2013
  • 100 replies
  • 390118 views

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:

    • Interlaced video encdoing does not work at all (not supported in current consumer Geforce drivers)

    • Audio support is very limited: uncompressed PCM)

no AAC or Dolby-Digital

    • Multiplexer support is very limited: MPEG-2 TS only, using an included third-party tool TSMuxer.EXE

no MPEG-4 muxing (*.MP4)

    • When the muxed MPEG-2 TS file in Windows Media Player (WMP), there is no sound.  This is because WMP doesn't recognize PCM-audio in mpeg-2 ts files.  You have 2 choices; you can use a third-party media-player such as MPC-HC or VLC.  Or you can postprocess the audio-WAV file into a compatible format (Dolby Digital/AC-3)

    • in the pop-up plugin User-interface, the <multiplexer> tab is missing or not shown properly.

(To fix: Select a different codec, then re-select NVENC_export.)

    • Doesn't support older NVidia GPUs (GTX5xx and older, GT630 and lower)

Sorry, NVENC hardware was introduced with NVidia's Kepler family (2012)  Anything older than that will NOT work with the plugin.

This topic has been closed for replies.

100 replies

Participating Frequently
February 9, 2015

Hi, mp4box worked first time, but now it is stopping working, it says: Possible Variable Frame Rate: VUI "fixed_frame_rate_flag" absent.MP4box seems not work with codec anymore. Anyone with same problem?

lk58361083
Participating Frequently
February 13, 2015

Fury3D написал(а):

Hi, mp4box worked first time, but now it is stopping working, it says: Possible Variable Frame Rate: VUI "fixed_frame_rate_flag" absent.MP4box seems not work with codec anymore. Anyone with same problem?

Participating Frequently
February 14, 2015

Thank you, now it works. I think mp4box slowly very much render times.. The video render time was same time as mp4box process.. Mp4box double rendertimes :/ In this case Intel Quick Sync won, it was 25% faster.

Participant
February 7, 2015

Greetings, i have tested this preset and i love it! It uses 80-100% of Gpu when it used 0-30%

But it is useful when u use ONLY GPU ACCELERATED EFFECTS.

If i use an effect like the Noise Reduction or from the Magic Bullet Suite, Mojo or Denoiser for exaple, this preset does not work at all!
I can encode, but the GPU is at 0% and it takes the same time as the h264 premiere's preset and the CPU is at 100% as usual

I love the idea to encode with the combination of GPU and the CPU, because as it is now, if u encode a timeline that has effects that do not support GPU Acceleration you must use only the CPU.

Participant
February 4, 2015

So, I followed the video and got this using Premiere CS6...

Specs:

i7-2600

GTX 970

32gb RAM

Any clue?

February 5, 2015

to            Community Member

I  got similar error for timeline with black screen at the begining. If black video to replace with empty space no error.

Participant
March 3, 2015

What do you mean? Do you mean a black screen in general?  I have a title sequence that has a black background...

RJ_F1
Participant
January 6, 2015

Is it just me or is rendering 1920x1080p @ 60fps causing the following error for anyone else?

http://puu.sh/e85QB.png

Participating Frequently
February 27, 2015

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?

Participating Frequently
February 27, 2015

I found my issue, I just had to select level 5.1

Participant
January 3, 2015

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.

izimar
Participant
January 3, 2015

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.

izimar
Participant
January 1, 2015

If you have problem with mp4box you can use this build nvenc_export.zip - Google Drive

Problem was that one of parameters (-tmp value) passed to mp4box exectuble did not enclosed with double quotes.

Participant
November 15, 2014

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

notes:

- 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.

Known Participant
December 8, 2014

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?

Known Participant
November 4, 2014

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

Participant
November 2, 2014

This would be awesome for Macusers too.

Is there any Alternative we Macusers can use?

Participant
August 26, 2014

Dear Sir,

it function also with premiere pro cc 2014?

Thanks for your efforts

Ale