High Performance Video Encoding Using Nvidia GPUs

The missing part of the title of this session was that, instead of talking about encoding using CUDA, the point of discussion was using NVENC -- the fixed-function hardware encoder built into all Kepler GPUs to do h.264 encoding. They assured us that the NVENC encoder could handle eight streams of moderate quality h.264 video, regardless of GPU performance; the lower end GPUs would perform as well as higher end ones. Because the NVENC encoding is entirely hardware-accelerated on the fixed-function hardware, it also uses less power than CPU-based encoding or CUDA-based encoding.

Also discussed was the two different SDK models for using NVENC: first, the NVENC SDK, which lacks a provision for capture but allows more flexible encoder settings, and then the GRID SDK, which allows capture but has a small number of fixed encoder settings. The GRID SDK version is important because it allows us a peek into how the GRID cloud gaming systems work. They directly capture the output of the GPU and encode it into h.264 video for low-latency streaming, which is then streamed to the player. That is an answer to a portion of the 'how does GRID work?' and 'how will SHIELD work?' questions you might have.

Contact Us for News Tips, Corrections and Feedback

  • majorlag
    Except GPU encoding has yet to produce the same quality as x264. Sure if your uploading to Youtube or some other stream sites and just need a h.264 stream quick and dirty it will look ok. If you want better results, then use those cuda to hardware accelerate the decoding of streams to feed to x264. x264 does have a fast encoding times if you use the basic settings, and those can churn out h.264 streams rather quick, and look closer to the original by a large factor compared to GPU encoding.

    See GPU encoding can't encode 10bit, they also take short cuts on what all profiles and settings are allowed to be feed. In fact the last time I tried to use a GPU, it had no settings to change what so ever, just input, output, resolution, You couldn't even select DXVA compliant!

    So please be kind to your archive of high quality encodes and choose a trusted encoder front end for x264. I recommend MeGUI or Handbreak

    ~Majorlag
    Reply
  • A Bad Day
    Another issue is decreased stability when GPU acceleration is activated. On Youtube, sometimes the videos turn out to be plain green with audio, Firefox/IE/Chrome locks up, or cause an OS hard-lock.
    Reply
  • bison88
    High Performance != High Quality. Even though the ability to offload to the GPU has existed for well over 6 years, the quality is still really bad in comparisons to the much slower CPU encoding. At this point it's hard to tell whether it's the hardware or software that is the problem, but much work needs to be done to even consider GPU based encoding given the noticeable quality difference.
    Reply
  • mmstick
    majorlagExcept GPU encoding has yet to produce the same quality as x264. Sure if your uploading to Youtube or some other stream sites and just need a h.264 stream quick and dirty it will look ok. If you want better results, then use those cuda to hardware accelerate the decoding of streams to feed to x264. x264 does have a fast encoding times if you use the basic settings, and those can churn out h.264 streams rather quick, and look closer to the original by a large factor compared to GPU encoding.See GPU encoding can't encode 10bit, they also take short cuts on what all profiles and settings are allowed to be feed. In fact the last time I tried to use a GPU, it had no settings to change what so ever, just input, output, resolution, You couldn't even select DXVA compliant!So please be kind to your archive of high quality encodes and choose a trusted encoder front end for x264. I recommend MeGUI or Handbreak~Majorlag
    I don't even recommend MeGUI, Handbreak, or any kind of GUI. It is far more efficient to just download the latest x264 and write your own batch file and be done with it. Automated batch encoding beats manually configuring everything in a petty GUI that lacks all the granular settings.
    Reply
  • rocknrollz
    Wow, I just finished encoding a h.264 video file in Premiere with my Kepler card (Seriously)
    Reply
  • ojas
    Ok, so in the last 2 days we've been told that Borderlands 2 has PhysX and Nvidia cards can transcode video using fixed function logic.

    Should we expect a third video tomorrow telling us that CUDA is a thing?
    Reply
  • dark_knight33
    mmstickI don't even recommend MeGUI, Handbreak, or any kind of GUI. It is far more efficient to just download the latest x264 and write your own batch file and be done with it. Automated batch encoding beats manually configuring everything in a petty GUI that lacks all the granular settings.
    This sounds exactly like the eliteist linux douchebaggery that I was talking about in another article. It's not more efficient, it's less. You trade some of that efficiency that a GUI provides for a major loss of user friendliness and blocking off of the software to everyone that doesn't know how to write a batch file, or doesn't understand what the different encoding options of the codecs do. If *you* are able to get the job done faster not using a GUI, good for you. That doesn't mean it's more efficient for the other hundred million people using the GUIs with presets.
    Reply
  • farensabri
    OpenCL > CUDA
    Reply
  • farensabri
    mmstickI don't even recommend MeGUI, Handbreak, or any kind of GUI. It is far more efficient to just download the latest x264 and write your own batch file and be done with it. Automated batch encoding beats manually configuring everything in a petty GUI that lacks all the granular settings.
    sounds like a douche
    Reply
  • Draven35
    Its not CUDA. If you think this video is talking about CUDA encoding, you didnt watch it, or didnt pay attention. There is a hardware h.264 encoder built into Kepler GPUs.
    Reply