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"
You will also need source code of Caption2Ass_PCR.
git clone https://github.com/maki-rxrz/Caption2Ass_PCR <path-to-clone>
setx CAPTION2ASS_SRC "<path-to-clone>/src"
git clone https://github.com/rigaya/NVEnc --recursive
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/11
- git
- libraries
- ffmpeg 4.x libs (libavcodec58, libavformat58, libavfilter7, libavutil56, libswresample3)
- libass9
- [Optional] AvisynthPlus
- [Optional] VapourSynth
sudo apt install build-essential git
Check driver version which could be installed.
ubuntu-drivers devices
You shall get the output like below.
== /sys/devices/pci0000:00/0000:00:03.1/0000:0d:00.0 ==
modalias : pci:v000010DEd00001B80sv000019DAsd00001426bc03sc00i00
vendor : NVIDIA Corporation
model : GP104 [GeForce GTX 1080]
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-460 - distro non-free recommended
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-450 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
Select and install the latest driver.
sudo apt install nvidia-driver-460
sudo reboot
After reboot, check if the driver has been installed properly.
rigaya@rigaya6-linux:~$ nvidia-smi
Sun Feb 21 13:49:17 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 On | N/A |
| 0% 33C P8 8W / 230W | 46MiB / 8111MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1076 G /usr/lib/xorg/Xorg 36MiB |
| 0 N/A N/A 1274 G /usr/bin/gnome-shell 7MiB |
+-----------------------------------------------------------------------------+
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-2-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install --no-install-recommends cuda
export CUDA_PATH=/usr/local/cuda
Install ffmpeg and other required libraries.
sudo apt install ffmpeg \
libavcodec-extra libavcodec-dev libavutil-dev libavformat-dev libswresample-dev libavfilter-dev \
libass9 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 git://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus
mkdir avisynth-build && cd avisynth-build
cmake ../
make -j16 && sudo make install
cd ../..
# Install lsmash
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
sudo make install -j16
cd ..
# Install vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works
# Use older version to meet libavcodec lib version requirements
git checkout -b 20200531 refs/tags/20200531
cd VapourSynth
meson build
cd build
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 apt install python3-pip autoconf automake libtool meson
git clone https://github.com/sekrit-twc/zimg.git
cd zimg
./autogen.sh
./configure
sudo make install -j16
cd ..
sudo pip3 install Cython
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make -j16
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
# Install lsmash
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
sudo make install -j16
cd ..
# Install vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works
# Use older version to meet libavcodec lib version requirements
git checkout -b 20200531 refs/tags/20200531
cd VapourSynth
meson build
cd build
sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure
make -j16
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
- GPU Driver 435.21 or later
- C++17 Compiler
- CUDA 10
- git
- libraries
- ffmpeg 4.x libs (libavcodec58, libavformat58, libavfilter7, libavutil56, libswresample3)
- libass9
- [Optional] VapourSynth
sudo apt install build-essential git
Check driver version which could be installed.
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
ubuntu-drivers devices
You shall get the output like below.
== /sys/devices/pci0000:00/0000:00:03.1/0000:0d:00.0 ==
modalias : pci:v000010DEd00001B80sv000019DAsd00001426bc03sc00i00
vendor : NVIDIA Corporation
model : GP104 [GeForce GTX 1080]
driver : nvidia-driver-435 - distro non-free
driver : nvidia-driver-440 - third-party free recommended
driver : nvidia-driver-390 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin
Select and install the latest driver.
sudo apt install nvidia-driver-440
sudo reboot
After reboot, check if the driver has been installed properly.
rigaya@rigaya6-linux:~$ nvidia-smi
Fri Apr 24 22:39:10 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82 Driver Version: 440.82 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 GeForce GTX 1080 Off | 00000000:0D:00.0 On | N/A |
| 0% 31C P8 9W / 230W | 89MiB / 8111MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1345 G /usr/lib/xorg/Xorg 39MiB |
| 0 1786 G /usr/bin/gnome-shell 46MiB |
+-----------------------------------------------------------------------------+
sudo apt install nvidia-cuda-toolkit
Install ffmpeg and other required libraries.
sudo apt install ffmpeg \
libavcodec-extra libavcodec-dev libavutil-dev libavformat-dev libswresample-dev 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
cd zimg
./autogen.sh
./configure
sudo make install -j16
cd ..
sudo pip3 install Cython
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make -j16
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
sudo make install -j16
cd ..
# Install vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works/VapourSynth
meson build
cd build
sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure
make -j16
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][440.82]
Avaliable Codec(s)
H.264/AVC
H.265/HEVC
- GPU Driver 435.21 or later
- C++17 Compiler
- CUDA 10
- git
- libraries
- ffmpeg 4.x libs (libavcodec58, libavformat58, libavfilter7, libavutil56, libswresample3)
- 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 \
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
cd zimg
./autogen.sh
./configure
sudo make install -j4
cd ..
sudo pip3 install Cython
git clone https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make -j4
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
sudo make install -j4
cd ..
# Install vslsmashsource
git clone https://github.com/HolyWu/L-SMASH-Works.git
cd L-SMASH-Works/VapourSynth
meson build
cd build
sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure --cxx=g++-8
make -j4
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)
- 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 -j16 && sudo make install
cd ../..
# Build lsmash
git clone https://github.com/l-smash/l-smash.git
cd l-smash
./configure --enable-shared
sudo make install -j16
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
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 -j16
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
sudo make install -j16
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
sudo ninja install
cd ../../../
git clone https://github.com/rigaya/NVEnc --recursive
cd NVEnc
./configure
make -j16
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