ubuntu20.04编译FFMpeg支持nvidia硬件加速

1、首先安装nvidia显卡驱动,安装显卡驱动对应的CUDA,安装和CUDA对应的cudnn,不清楚的小伙伴请移步到Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制_BetterJason的博客-CSDN博客

2、 安装必要软件包

sudo apt install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev

 #PS:aptitude   [ˈæptɪtjuːd](资质; 天资; 天赋; 天生的才能) 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净
     
            sudo apt install aptitude

            # 安装gcc、g++,分别为c、c++编译器
            sudo aptitude install build-essential

            # 安装yasm、nasm.这是两个汇编器,编译FFmpeg需要用到
            sudo aptitude install yasm nasm

            # 安装依赖库,FFmpeg 的安装依赖许多库(如,⾳频编码库,⾳频解码库,视频编解码库等)
            sudo apt-get install  gnutls-bin \
            pkg-config \
            libgmp3-dev \
            libaom-dev \
            libass-dev \
            libbluray-dev \
            libfdk-aac-dev \
            libmp3lame-dev \
            libopencore-amrnb-dev \
            libopencore-amrwb-dev \
            libopenmpt-dev \
            libopus-dev \
            libshine-dev \
            libsnappy-dev \
            libsoxr-dev \
            libspeex-dev \
            libtheora-dev \
            libtwolame-dev \
            libvo-amrwbenc-dev \
            libvpx-dev \
            libwavpack-dev \
            libwebp-dev \
            libx264-dev \
            libx265-dev \
            libxvidcore-dev \
            liblzma-dev \
            zlib1g-dev \
            wget  \
            texinfo \
            libxcb-xfixes0-dev \
            libxcb-shm0-dev \
            libxcb1-dev \
            libvorbis-dev \
            libvdpau-dev \
            libva-dev \
            libtool \
            libsdl2-dev \
            libfreetype6-dev \
            git-core \
            cmake

            # 上述依赖库使用apt-get安装也是一样的

3、安装依赖头文件包,这里需要安装一个头文件包,里面包含了一系列用到的头文件。

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
sudo make install

4、下载FFMPEG

         地址:https://ffmpeg.org/download.html#build-linux
         下载 Ubuntu-official packages-> 7:4.4.1-3ubuntu5

         解压源码:
         tar -xvf tar -xvf ./ffmpeg_4.4.1.orig.tar.xz

5、编译

        5.1进入源码文件夹,执行如下命令,配置文件

sudo ./configure   --prefix=/usr/local/ffmpeg_x86_64-linux-gpu --enable-gpl --enable-version3 --enable-libspeex --enable-libmp3lame --enable-libvorbis --enable-shared --enable-libfdk-aac --enable-libass --enable-libfontconfig --enable-libfreetype --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-nonfree  --enable-cuda-nvcc  --enable-cuvid --enable-nvenc  --enable-ffnvcodec  --enable-nvdec  --extra-cflags=-I/usr/local/cuda-11.6/include --extra-ldflags=-L/usr/local/cuda-11.6/lib64

# PS:
         --prefix=/usr/local/ffmpeg_x86_64-linux-gpu   :一定要使用绝对路径,表示在源码目录下面会生成一个文件夹,make install 后 该文件夹下面生成 bin   include lib  share 四个文件夹
         --enable-shared     :表示生成动态库
         --enable-libx264 --enable-libx265   :表示开启 x264  x265编解码器

 #这个步骤遇到的问题:

Q1:提示:ERROR: failed checking for nvcc.

查看 /etc/profile看到cuda的bin和lib环境都已经设置了,执行名 nvcc -V 也可以正确显示cuda的版本信息,说明cuda安装正确。

解决方法如下:直接修改configure这条语句

sudo vim ./configure

查找ERROR: failed checking for nvcc.

将词句改为:

enabled cuda_nvcc         && { check_nvcc cuda_nvcc; }

Q2:执行 make install的时候 提示:nvcc fatal   : Unsupported gpu architecture 'compute_30'

这是因为compute_30在cuda11中已经过时,请根据官方提示更改自己显卡的archCUDA GPUs - Compute Capability | NVIDIA Developer

我的显卡是gtx950m,所以应该是5.0

ubuntu20.04编译FFMpeg支持nvidia硬件加速_第1张图片

#修改configure

sudo vim ./configure

#查找compute_30

将词句更改为 

nvccflags_default="-gencode arch=compute_50,code=sm_50 -O2"

ubuntu20.04编译FFMpeg支持nvidia硬件加速_第2张图片

#保存

wq

#重新执行5.1的指令

5.2 编译

sudo make j-8

Q1:提示 /bin/sh: 1: nvcc: not found

这是因为,没有找到nvcc

解决方法,修改 ./ffbuild/config.mak中的nvcc的路径,这个路径是你本机nvcc的路径

ubuntu20.04编译FFMpeg支持nvidia硬件加速_第3张图片

# 编译成功后,安装

sudo make install

#bin lib include share四个文件夹会安装到--prefix指定的目录-》/usr/local/ffmpeg_x86_64-linux-gpu

5.3设置运行的环境变量

sudo vim /etc/profile

#在最下面增加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ffmpeg_x86_64-linux-gpu/lib
export PATH=$PATH:/usr/local/ffmpeg_x86_64-linux-gpu/bin

#保存

wq

#刷新环境变了文件

source /etc/profile

5.4验证

ffmpeg -codecs | grep cuvid

ubuntu20.04编译FFMpeg支持nvidia硬件加速_第4张图片

ffmpeg -codecs |  grep nvenc

ubuntu20.04编译FFMpeg支持nvidia硬件加速_第5张图片

上述说明ffmpeg已经带有nvidia的硬件加速了!

    

你可能感兴趣的:(FFMPEG,ubuntu,图像处理,视频编解码,实时音视频,视觉检测)