• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
10

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

Guest
Jun 27, 2013 Jun 27, 2013

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:

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

TOPICS
Hardware or GPU

Views

366.4K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
replies 421 Replies 421
Guest
Feb 01, 2016 Feb 01, 2016

Copy link to clipboard

Copied

That did the trick!  THANKS!

Trying it out now.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 02, 2016 Feb 02, 2016

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"

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Feb 02, 2016 Feb 02, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 03, 2016 Feb 03, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 03, 2016 Feb 03, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Feb 04, 2016 Feb 04, 2016

Copy link to clipboard

Copied

nvenc_export 1.09 - j1 normal work with 347.88
with 361.75 drivers nvenc_export is loaded,

02.jpg

while export gives an error message

00.JPG

after "Ignore", mp4box gives error, export to m4v is ok

01.jpg

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 04, 2016 Feb 04, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 25, 2016 Feb 25, 2016

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Feb 02, 2016 Feb 02, 2016

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!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 02, 2017 Mar 02, 2017

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 03, 2017 Mar 03, 2017

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 13, 2017 Mar 13, 2017

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:"

Thank you for this workaround

It work also with an effect layer over all vidéos, and just one keyframe in opacity.

Olivier

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
May 24, 2017 May 24, 2017

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
May 24, 2017 May 24, 2017

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 09, 2016 Feb 09, 2016

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

Capture1.PNG

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Feb 09, 2016 Feb 09, 2016

Copy link to clipboard

Copied

try 1.11
the 1.09 outdated for your configuration

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 09, 2016 Feb 09, 2016

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?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 10, 2016 Feb 10, 2016

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

T1.mp4_snapshot_03.20_[2016.02.10_08.47.02].png

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines