ffmpeg gpu加速视频解码抽帧

436 阅读1分钟

软件与依赖安装

  1. 确保GPU 驱动程序已正确安装。
  2. 安装必要依赖
sudo apt-get update
sudo apt-get install -y build-essential git cmake pkg-config
  1. 安装 CUDA 工具包(如果尚未安装)。可以按照 NVIDIA 的官方文档进行安装,保证和drive_vision匹配
  2. 安装ffnvcodec
  • 参考官方链接中的sdk readme,选择 满足你驱动版本的分支 下载编译
git clone -b sdk/11.0 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
  1. 安装video_codec_sdk
sudo cp Interface/* /usr/include
sudo cp Lib/linux/stubs/x86_64/* /usr/lib
  1. 下载安装
sudo apt-get update
sudo apt-get install yasm
  1. 下载安装ffmpeg 编译需要一定时间,耐心等待,10-20分钟很常见
git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg
./configure --enable-hwaccel=cuvid --enable-nvenc --enable-nvdec --enable-cuda --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
make
sudo make install
  1. 补充依赖
sudo apt-get install libnvidia-encode1

验证

  • 输入
ffmpeg -hwaccels

image.png

  • 视频解码
ffmpeg -i input_video.mp4 -c:v h264_nvenc output_video.mp4

合辑版

#!/bin/sh

# 构建安装目录
dir_name="ffmpeg_dev"
if [ -d "${dir_name}" ]; then
    rm -rf "${dir_name}"
    mkdir "${dir_name}"
else
    mkdir "${dir_name}"
fi
cd ${dir_name}

# 下载安装video_codec_sdk
echo "install video_codec_sdk..."
mkdir video_codec_sdk_dev
cd video_codec_sdk_dev
wget -O video_codec_sdk.zip "https://p26-orange.byteorge.com/obj/ad-tetris-site/file_composite/b309ef2c387c9aead5d5faf9ebc83b63"
unzip -o video_codec_sdk.zip -d video_codec_sdk
cd video_codec_sdk/Video_Codec_SDK_10.0.26/
sudo cp Interface/* /usr/include
sudo cp Lib/linux/stubs/x86_64/* /usr/lib
cd ../../../
echo "video_codec_sdk done<<<"

# 安装yasm
sudo apt-get update
sudo apt-get install yasm
sudo apt-get install libmp3lame-dev
sudo apt install libvpx-dev
sudo apt install libx264-dev
sudo apt install libx265-dev
sudo apt install libnuma1 libnuma-dev
sudo apt-get install libavdevice-dev
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH

# 编译安装ffmpeg,# FFMPEG GPU加速
echo "install ffmpeg..."
wget -O ffmpeg.zip "https://tosv.byted.org/obj/ocr-doc/ffmpeg/FFmpeg-release-7.1.zip"
unzip -o ffmpeg.zip -d ffmpeg
rm ffmpeg.zip
cd ffmpeg/FFmpeg-release-7.1
./configure --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx --enable-libmp3lame --enable-libnpp --enable-nvdec --enable-nonfree --enable-cuda-nvcc --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared
make -j$(nproc)
sudo make install
ffmpeg -hwaccels
cd ../../
echo "ffmpeg done <<<"