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

您所在的位置:网站首页 ubuntu一键安装ffmpeg ubuntu20.04编译FFMpeg支持nvidia硬件加速

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

2023-08-18 21:53| 来源: 网络整理| 查看: 265

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 --disable-x86asm  --enable-libmfx --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    --enable-opencl  --extra-cflags=-I/usr/local/cuda-11.6/include --extra-ldflags=-L/usr/local/cuda-11.6/lib64 --extra-ldflags=-L/usr/local/lib --extra-libs=-liconv

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

         --enable-libmfx:是intel qsv硬件加速,如果不需要请删除。

 #这个步骤遇到的问题:

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

#修改configure

sudo vim ./configure

#查找compute_30

将词句更改为 

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

#保存

wq

#重新执行5.1的指令

5.2 编译

sudo make j-8

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

这是因为,没有找到nvcc

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

# 编译成功后,安装

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

ffmpeg -codecs |  grep nvenc

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

    



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3