Ubuntu 18.04 安装ffmpeg(支持GPU硬件加速)

  • Post author:
  • Post category:其他




Ubuntu 18.04 安装FFmpeg (支持GPU加速),详细踩坑,可行



1:安装前请自行安装nvidia驱动和cudu cudnn

查看cuda版本

nvcc -V

在这里插入图片描述



2:安装nv-codec-hearers

官网:

https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/

//Clone 
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

//进入文件夹
cd nv-codec-headers 

//切换到指定版本,-b 新分支命名
//可使用 git tag 查看可选的版本,我选择的是n11.0.10.2
git checkout n11.0.10.2 -b nv-codec-headers
// 查看该分支版本支持的驱动版本是否满足自己驱动的版本要求(,若不满足则再次切换其他版本查看下图)
cat README

//满足版本要求后Install 
make
sudo make install && cd ..

## 通过pkg-config 验证ffnvcodec,如果找不到,把ffnvcodec.pc路径添加到PKG_CONFIG_PATH
pkg-config --modversion ffnvcodec

在这里插入图片描述



3:安装ffmpeg编码库

//Clone 
git clone https://code.videolan.org/videolan/x264.git

//Install 
cd x264
./configure --disable-asm --enable-shared --enable-pic

make
sudo make install
//也可通过以下命令直接安装
sudo apt-get install x264 libx264-dev



4:安装ffmpeg

//安装必要的依赖库(都下载吧,免得缺失,我就一直缺失libavfilter.pc文件)
sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev
sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
sudo apt install libavformat-dev
sudo apt install libavcodec-dev
sudo apt install libswresample-dev
sudo apt install libswscale-dev
sudo apt install libavutil-dev
sudo apt install libsdl1.2-dev


//Clone ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/

//enter
cd ffmpeg
export LD_LIBRARY_PATH={自己的路径}/ffmpeg/
source ~/.bashrc

//setting,注意,不要把指令写在extra指令之后,会报错,坑死我了
./configure --prefix=/usr/local/ffmpeg --disable-static --enable-shared --disable-avdevice --disable-sdl2 --disable-ffplay --disable-zlib --disable-lzma --enable-cuda --disable-doc --enable-gpl --enable-libx264 --enable-cuvid --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64

//install
make clean
make -j8
sudo make install



5:建立软连接

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe

增加安装目录的动态链接库

//临时增加:
export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH
//加入到配置文件
vim ~/.bashrc
//在文件最后新增一行,按i插入, esc+:wq 保存
export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH
// 立即生效
source ~/.bashrc



6 检查硬件加速

//检查硬件加速,有输出即正常
ffmpeg -hwaccels
//检查编码器和解码器
ffmpeg -codecs | grep cuvid
含有 h264_cuvid和h264_nvenc即可硬件加速



7:添加库连接

# 进入root用户执行
su
echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf
ldconfig



8 :运行实例检查

//替换<input>为存在的某视频文件路径,<outpuy>为输出的视频文件路径,可以自定义
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>



9:卸载重装

卸载

删除相应的软链接/usr/bin/ffmpeg和/usr/bin/ffprobe,编译目录/usr/local/ffmpeg。清空环境变量中修改的地方并更新。

重装

当需要更新或者回退,以及需要额外增加库支持时:

①删除ffmpeg-4.2.2/ffbuild目录下的带config字段的文件,rm

config



②删除相应的软链接/usr/bin/ffmpeg和/usr/bin/ffprobe,编译目录/usr/local/ffmpeg。

③重新编译、安装并新建软链接。

④配置ffmpeg依赖环境/etc/ld.so.conf并更新环境变量。

参考:https://blog.csdn.net/TracelessLe/article/details/107362505



版权声明:本文为txf1931783593原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。