FFmpeg編譯with NVIDIA硬體加速

NO IMAGE

FFmpeg編譯with NVIDIA硬體加速

安裝NVIDIA顯示卡驅動

下載對應顯示卡型號驅動

lspci | grep VGA

https://www.nvidia.com/Download/index.aspx

解除安裝舊的驅動

sudo apt-get purge nvidia*
//禁用linux核心自帶nouveau nvidia驅動
editor /etc/modprobe.d/blacklist-nouveau.conf
//在檔案blacklist-nouveau.conf中新增以下內容:
blacklist nouveau
options nouveau modeset=0
// 更新初始化
update-initramfs -u
//修改後需要重啟系統。確認下Nouveau是否已經被禁用,使用命令:
lsmod | grep nouveau

安裝驅動

service lightdm stop
./NVIDIA-Linux-x86_64-375.26.run
service lightdm start
// 安裝完成並重啟後確認下驅動是否工作正常
cat /proc/driver/nvidia/version
nvidia-smi
// 解碼庫
sudo ld -lnvcuvid
// 編碼庫
sudo ld -lnvidia_encode

安裝CUDA

https://developer.nvidia.com/cuda-toolkit-archive
安裝完成後,在/usr/local/cuda目錄下會生成include標頭檔案和lib64庫檔案

// nvcc是CUDA編譯器
$ nvcc -V

安裝NVIDIA VIDEO CODEC SDK

https://developer.nvidia.com/video-codec-sdk-archive

// 編譯sample
cd Sample
make

編譯FFmpeg

// 安裝yasm
sudo apt-get install yasm
// NVIDIA VIDEO CODEC SDK headers
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
make
sudo make install
git clone https://git.ffmpeg.org/ffmpeg.git
./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
make
sudo make install
// 檢視硬解碼器
ffmpeg -codecs | grep cuvid
// 檢視硬編碼器
ffmpeg -codecs | grep nvenc
  • 此外FFmpeg採用linux c編寫,只提供了Makefile的生成方式,在Windows下編譯需要先安裝MinGW MSYS環境

參考資料

最後附上百度網盤NVIDIA 驅動、CUDA、CUDNN分享地址