
A simple video transcoder with Nvidia CUDA acceleration support, and multitrack audio compatibility. Great for creating proxy files for Premiere Pro, where multitrack audio is required if present but not supported in transcoding.
Uses github.com/rigaya/NVEnc instead of FFMPEG.
The Problem
Why use github.com/rigaya/NVEnc instead of FFMPEG? Simple: Speed.
I was recording long gameplay sessions, and editing them in Premiere Pro on very underpowered hardware. To edit high-quality videos on lesser systems, proxy files should be used. These are lower-resolution and easier to scrub through quickly.
Creating these using Premiere would not be an option, as there was no multitrack audio support.
FFMPEG was an alternative option, but seemed to run slowly.
Faster!
github.com/rigaya/NVEnc, and it’s NVEncC.exe
encoder ran much faster on my system than FFMPEG. The program works by using templated settings for video files, and running through one queue of videos at a time.
This was very specialized to my use case - or that of rapidly and efficiently creating proxy video files.
The Context Menu C++ program simply installs and removes the context menu options based on CLI arguments. This can be executed from the main EXE by passing in shell add
or shell remove
. Functionality could have been compiled into one application, however.
The Queue C++ program also does one simple, specialized task: Start up quickly, silently, and add a file to a text file for processing later. This makes more sense being separate, as you would want the snappiest response from using the Right-Click context menu in a Windows Explorer window.
The main process checks the user’s installed Nvidia driver version, then processes CLI arguments. Most of the arguments explain the program, or return compatible codecs and formats from the underlying NVEncC.exe
encoder by passing CLI arguments to that.
Difficulties
- As shown by the
bin
folder withRelease
andDebug
binaries in the: This was literally my first project using a version control like Git. Before I knew about.gitignore
. The project didn’t have Releases, either. - The settings file is massive, and could have greatly benefitted from some kind of UI that the user can choose from preset options. Possibly, a website to generate the options file, or another kind of front-end. While this could be used to expand it, the text file approach is simple and contains useful comments breaking down options.

Looking back, for a first open-source project, it’s well documented. If only it had official releases at the time.
