ffmpeg NVIDIA编解码系列
★我的音视频编解码开源项目-FFmpeg-Media-Codec-Pipeline
1、依赖安装
sudo apt-get -y install autoconf automake build-essential 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 zlib1g-dev
sudo apt-get install yasm
sudo apt-get install nasm
2、音视频编解码库安装
视频:
sudo apt-get install libx264-dev
sudo apt-get install libx265-dev
音频:
sudo apt-get install libfdk-aac-dev
sudo apt-get install libmp3lame-dev
sudo apt-get install libopus-dev
3、源码下载、编译安装
这里以4.0.5版本为例
wget https://ffmpeg.org//releases/ffmpeg-4.0.5.tar.bz2
tar xjvf ffmpeg-4.0.5.tar.bz2
nv-codec-headers下载安装
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
ffmpeg支持NVIDIA编解码编译安装(需要安装cuda),进入到解压后的ffmpeg-4.0.5目录
./configure \
--prefix="/usr/local" \
--extra-cflags="-I/usr/local/cuda/include" \
--extra-ldflags="-L/usr/local/cuda/lib64" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--bindir="/usr/local/bin" \
--enable-shared \
--enable-gpl \
--enable-libfdk_aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree \
--enable-cuda \
--enable-cuvid \
--enable-nvenc \
--enable-libnpp
make -j
make install
如果configure报错,是因为nv-codec-headers版本不对,先切换版本重新编译:
git clone -b n11.1.5.3 https://github.com/FFmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
然后重新进入ffmpeg-4.0.5目录configure。
4、环境配置
1、sudo vi /etc/ld.so.conf 添加一行库路径:/usr/local/lib
2、sudo ldconfig
3、vi ~/.profile 添加下面内容
FFMPEG=/usr/local
PATH="$PATH:$FFMPEG/bin"
4、source ~/.profile
如果是安装在/usr/local下面,可以不用进行上面的配置,如果没安装在/usr/local下面就需要进行上面的配置,路径用ffmpeg安装的实际路径。
5、测试
ffmpeg -codecs | grep cuvid
ffmpeg -hwaccels
我的开源:
1、Nvidia视频硬解码、渲染、软/硬编码并写入MP4文件。项目地址:https://github.com/BreakingY/Nvidia-Video-Codec
2、Jetson Jetpack5.x视频编解码。项目地址:https://github.com/BreakingY/jetpack-dec-enc
3、ffmpeg音视频(H264/H265/AAC)封装、解封装、编解码pipeline,支持NVIDIA硬编解码。项目地址:https://github.com/BreakingY/FFmpeg-Media-Codec-Pipeline
4、simple rtsp server,小而高效的rtsp服务器,支持H264、H265、AAC、PCMA;支持TCP、UDP;支持鉴权。项目地址:https://github.com/BreakingY/simple-rtsp-server
5、simple rtsp client,rtsp客户端,支持TCP、UDP、H264、H265、AAC、PCMA,支持鉴权。项目地址:https://github.com/BreakingY/simple-rtsp-client
6、libflv,flv muxer/demuxer,支持H264/H265、AAC。项目地址:GitHub - BreakingY/libflv: flv muxer/demuxer,support H264/H265、AAC。