To build NVEnc, components below are required.
- Visual Studio 2019
- CUDA 10.1 or later (x64)
- CUDA 11.0 or later (x86)
- Avisynth SDK
- VapourSynth SDK
Install Avisynth+ and VapourSynth, with the SDKs.
Then, "avisynth_c.h" of the Avisynth+ SDK and "VapourSynth.h" of the VapourSynth SDK should be added to the include path of Visual Studio.
These include path can be passed by environment variables "AVISYNTH_SDK" and "VAPOURSYNTH_SDK".
With default installation, environment variables could be set as below.
setx AVISYNTH_SDK "C:\Program Files (x86)\AviSynth+\FilterSDK"
setx VAPOURSYNTH_SDK "C:\Program Files (x86)\VapourSynth\sdk"
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
curl -s -o ffmpeg_lgpl.7z -L https://github.com/rigaya/ffmpeg_dlls_for_hwenc/releases/download/20240902/ffmpeg_dlls_for_hwenc_20240902.7z
7z x -offmpeg_lgpl -y ffmpeg_lgpl.7z
Finally, open NVEnc.sln, and start build of NVEnc by Visual Studio.
For Debug build | For Release build | |
---|---|---|
NVEncC(64).exe | DebugStatic | RelStatic |
NVEnc.auo (win32 only) | Debug | Release |
cufilters.auf (win32 only) | DebugFilters | RelFilters |
- GPU Driver 435.21 or later
- C++17 Compiler
- CUDA 10-12
- git
- libraries
- ffmpeg 4.x-7.x libs (libavcodec*, libavformat*, libavfilter*, libavutil*, libswresample*, libavdevice*)
- libass9
- [Optional] AvisynthPlus
- [Optional] VapourSynth
sudo apt install build-essential git
Download CUDA deb file for each OS.
# For Ubuntu 20.04
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
# For Ubuntu 22.04
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
Install CUDA.
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install --no-install-recommends cuda-toolkit
export CUDA_PATH=/usr/local/cuda
Note
When isntall failes on Ubuntu 24.04 using the command line above, selecting only the required packages as below would work. CUDA_VER_MAJOR and CUDA_VER_MINOR might be needed to be chaged.
CUDA_VER_MAJOR=12
CUDA_VER_MINOR=4
apt-get -y install cuda-drivers cuda-compiler-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} \
cuda-cudart-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} cuda-driver-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} \
cuda-nvrtc-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} libcurand-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} \
libnpp-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR} cuda-nvml-dev-${CUDA_VER_MAJOR}-${CUDA_VER_MINOR}
Install ffmpeg and other required libraries.
sudo apt install ffmpeg \
libavcodec-extra libavcodec-dev libavutil-dev libavformat-dev libswresample-dev libavfilter-dev libavdevice-dev \
libass-dev
AvisynthPlus is required only if you need AvisynthPlus(avs) reader support.
Please go on to [7. Build NVEncC] if you don't need avs reader.
How to build AvisynthPlus
sudo apt install cmake
git clone https://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus
mkdir avisynth-build && cd avisynth-build
cmake ../
make && sudo make install
cd ../..
VapourSynth is required only if you need VapourSynth(vpy) reader support.
Please go on to [7. Build NVEncC] if you don't need vpy reader.
How to build VapourSynth
sudo apt install python3-pip cython3 autoconf automake libtool meson libzimg-dev
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make && sudo make install
# Make sure vapoursynth could be imported from python
# Change "python3.x" depending on your environment
sudo ln -s /usr/local/lib/python3.x/site-packages/vapoursynth.so /usr/lib/python3.x/lib-dynload/vapoursynth.so
sudo ldconfig
Make sure you get version number without errors.
LD_LIBRARY_PATH=/usr/local/lib vspipe --version
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure
make
Check if it works properly.
./nvencc --check-hw
You shall get information of the avaliable codecs supported by NVENC.
NVEnc (x64) 7.24 (r2526) by rigaya, Apr 28 2023 14:52:09 (gcc 12.2.0/Linux)
[NVENC API v12.0, CUDA 12.1]
reader: raw, y4m, avs, vpy, avsw, avhw [H.264/AVC, H.265/HEVC, MPEG2, VP8, VP9, VC-1, MPEG1, MPEG4, AV1]
#0: NVIDIA GeForce RTX 4080 (9728 cores, 2505 MHz)[2147483.64]
Avaliable Codec(s)
H.264/AVC
H.265/HEVC
AV1
- GPU Driver 435.21 or later
- C++17 Compiler
- CUDA 10
- git
- libraries
- ffmpeg 4.x libs (libavcodec58, libavformat58, libavfilter7, libavutil56, libswresample3, libavdevice58)
- libass9
- [Optional] VapourSynth
sudo apt install git g++-8
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
export CUDA_PATH=/usr/local/cuda
After reboot, check if the driver has been installed properly. (Tested on AWS g3s.xlarge)
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M60 On | 00000000:00:1E.0 Off | 0 |
| N/A 28C P8 15W / 150W | 0MiB / 7618MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Install ffmpeg 4.x libraries.
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update
sudo apt install ffmpeg \
libavcodec-extra58 libavcodec-dev libavutil56 libavutil-dev libavformat58 libavformat-dev libavdevice58 libavdevice-dev \
libswresample3 libswresample-dev libavfilter-extra7 libavfilter-dev libass9 libass-dev
VapourSynth is required only if you need VapourSynth(vpy) reader support.
Please go on to [6. Build NVEncC] if you don't need vpy reader.
How to build VapourSynth
sudo apt install python3-pip autoconf automake libtool meson
git clone https://github.com/sekrit-twc/zimg.git --recursive
cd zimg
./autogen.sh
./configure
make && sudo make install
cd ..
sudo pip3 install Cython
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make && sudo make install
# Make sure vapoursynth could be imported from python
# Change "python3.x" depending on your environment
sudo ln -s /usr/local/lib/python3.x/site-packages/vapoursynth.so /usr/lib/python3.x/lib-dynload/vapoursynth.so
sudo ldconfig
Make sure you get version number without errors.
vspipe --version
# Install lsmash
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
make && sudo make install
cd ..
# Install vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works/VapourSynth
meson build
cd build
ninja && sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure --cxx=g++-8
make
Check if it works properly.
./nvencc --check-hw
You shall get information of the avaliable codecs supported by NVENC. (Tested on AWS g3s.xlarge)
#0: Tesla M60 (2048 cores, 1177 MHz)[PCIe3x16][440.33]
Avaliable Codec(s)
H.264/AVC
H.265/HEVC
- C++17 compiler
- CUDA 11
- git
- libraries
- ffmpeg 4.x libs (libavcodec58, libavformat58, libavfilter7, libavutil56, libswresample3, libavdevice58)
- libass9
- [Option] AvisynthPlus
- [Option] VapourSynth
sudo dnf install @development-tools
sudo dnf update
sudo dnf upgrade
sudo dnf clean all
sudo dnf install kernel-devel
sudo dnf install make pciutils acpid libglvnd-devel
sudo dnf install dkms
Install CUDA and the NVIDIA driver included in CUDA package.
wget https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda-repo-fedora33-11-2-local-11.2.1_460.32.03-1.x86_64.rpm
sudo rpm -ivh cuda-repo-fedora33-11-2-local-11.2.1_460.32.03-1.x86_64.rpm
sudo dnf clean all
sudo dnf install cuda
reboot
CUDA was installed in /usr/local/cuda.
After reboot, check if the driver has been installed properly.
$ nvidia-smi
Sun Mar 7 14:27:45 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce GTX 1080 Off | 00000000:0D:00.0 Off | N/A |
| 0% 27C P8 7W / 230W | 65MiB / 8111MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1335 G /usr/libexec/Xorg 56MiB |
| 0 N/A N/A 1476 G /usr/bin/gnome-shell 6MiB |
+-----------------------------------------------------------------------------+
Install ffmpeg and other required libraries.
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install ffmpeg ffmpeg-devel libass libass-devel
AvisynthPlus is required only if you need AvisynthPlus(avs) reader support.
Please go on to [7. Build NVEncC] if you don't need avs reader.
How to build AvisynthPlus
sudo dnf install cmake
git clone git://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus
mkdir avisynth-build && cd avisynth-build
cmake ../
make && sudo make install
cd ../..
# Build lsmash
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
make && sudo make install
cd ..
# Build lsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works
git checkout -b 20200531 refs/tags/20200531
cd AviSynth
meson build
cd build
ninja && sudo ninja install
cd ../../../
VapourSynth is required only if you need VapourSynth(vpy) reader support.
Please go on to [7. Build NVEncC] if you don't need vpy reader.
How to build VapourSynth
sudo dnf install zimg zimg-devel meson autotools automake libtool python3-devel ImageMagick
sudo pip3 install Cython --install-option="--no-cython-compile"
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make && sudo make install
# Make sure vapoursynth could be imported from python
# Change "python3.x" depending on your environment
sudo ln -s /usr/local/lib/python3.x/site-packages/vapoursynth.so /usr/lib/python3.x/lib-dynload/vapoursynth.so
sudo ldconfig
Make sure you get version number without errors.
vspipe --version
# Build lsmash (Not required if already done in 5.3)
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
make && sudo make install
cd ..
# Build vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works
git checkout -b 20200531 refs/tags/20200531
cd VapourSynth
meson build
cd build
ninja && sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure
make
Check if it works properly.
./nvencc --check-hw
You shall get information of the avaliable codecs supported by NVENC.
#0: GeForce GTX 1080 (2560 cores, 1822 MHz)[PCIe3x16][460.32]
Avaliable Codec(s)
H.264/AVC
H.265/HEVC