支持硬件加速的ffmpeg编译

背景

为了降低cpu的使用率提升系统的接入能力,需要将编解码模块移至GPU处理,ffmpeg默认的发行版中不支持GPU加速,所以需要重新编译ffmpeg使其支持GPU硬件加速。
ffmpeg官方编译指导
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

读者

本文的读者须具备一定的Linux使用经验,如常规软件安装等操作不在本文档中描述。

术语

ffmpeg:开源的流媒体编解码等处理工具。

依赖组件

git:版本管理工具,用于获取程序源码;
g++:c++程序的编译器;
cmake:c++程序的编译管理工具;
ffmpeg:主要作用拉取rtsp视频流,如果不添加此组件,opencv只能从本机摄像机处取视频流处理,该工具源码可从github获取。
cuda运行时库:NVIDIA发布的用来使用GPU的底层依赖库,可从NVIDIA官网获取。
Video_Codec_SDK:NVIDIA提供的视频编、解码库,可从NVIDIA官网获取。

安装cuda

安装toolkit

NVIDIA官网上下载cuda toolkit。
sh cuda_11.4.4_470.82.01_linux.run//不要安装驱动,驱动安装网上教程很多,可参考。

安装nv-codec-header

安装nvidia 编译依赖头文件,make会生成.pc文件,make install 将.pc文件安装在系统路劲下,可以用pkg-config找到
git clone http://git.videolan.org/git/ffmpeg/nv-codec-headers.git
make
make install

安装nasm

sudo apt-get install nasm

安装x264

git clone --depth 1 https://code.videolan.org/videolan/x264.git
PKG_CONFIG_PATH="/usr/local/x264/pkgconfig" ./configure --prefix="/usr/local/x264" --bindir="/usr/local/x264/bin" --enable-static --enable-pic && \
make & make install

安装x265

wget -O x265.tar.bz2 https://bitbucket.org/multicoreware/x265_git/get/master.tar.bz2
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/usr/local/x265" -DENABLE_SHARED=off ../../source
make & make install

ffmpeg编译

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/x264/lib/pkgconfig:/usr/local/x265/lib/pkgconfig
./configure --prefix="/usr/local/ffmpeg/" --extra-cflags="-I/usr/local/cuda/include"  --extra-ldflags="-L/usr/local/cuda/lib64" --extra-libs="-lpthread -lm" --bindir="/usr/local/ffmpeg/bin" --enable-shared --enable-ffplay --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --enable-gpl --enable-libx264 --enable-libx265 
make
make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib

结论

ffmpeg支持使用硬件解码(已完成),但是不支持硬件进行像素格式转换;即ffmpeg硬件解码后输出的像素格式是NV12,如果要转换则必须使用cpu进行。
 

你可能感兴趣的:(ffmpeg)