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
版权归原作者 跆拳道~跆拳小生~小陶 所有, 如有侵权,请联系我们删除。