在 Docker 和 kubenetes 中启用 GPU (nvidia) 支持
Docker 中运行 GPU (nvidia) ffmpeg
编译方法
https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/
镜像地址
Docker 版本要求使用 nvidia-docker2,不支持 DockerCE
常规命令
docker run --rm -it \
-v $(pwd):/config \
linuxserver/ffmpeg \
-i /config/input.mkv \
-c:v libx264 \
-b:v 4M \
-vf scale=1280:720 \
-c:a copy \
/config/output.mkv
使用 nvidia runtime,并指定 nvidia 的硬编码 h264_nvenc
docker run --rm -it \
--runtime=nvidia \
-v $(pwd):/config \
linuxserver/ffmpeg \
-hwaccel nvdec \
-i /config/input.mkv \
-c:v h264_nvenc \
-b:v 4M \
-vf scale=1280:720 \
-c:a copy \
/config/output.mkv
其中,硬件编码器和硬件解码器分别称为 NVENC
和 NVDEC
。
加速器支持在 Windows 和 Linux 平台上对以下视频编解码器进行硬件加速解码:
MPEG-2
VC-1
H.264 (AVCHD)
H.265 (HEVC)
VP8
VP9
AV1
官方性能报告如下,A100/Tesla
还是当前最好的卡,T4
较适合单机需要挂8块卡的场景。
在 Linux 上手动编译 GPU (nvidia) ffmpeg
CUDA
(可选)
通过驱动安装包自动安装安装 参考文档
nvidia-FFmpeg 支持 Windows
和 Linux
,手动编译需要安装 CUDA
工具包。
使用命令安装 N 卡驱动和工具包,需要根据需要选择要安装的驱动版本,如 460
。
apt install nvidia-driver-460
apt install nvidia-cuda-toolkit
手动安装可以进入官网驱动页面下载 https://www.nvidia.com/Download/index.aspx
,其中常见的 A
、N
、T
系列都在 Data Center
产品类型中。
如当前最新的 P40
的 Linux
驱动(包含 CUDA 11)。
CUDA®是由NVIDIA®发明的并行计算平台和编程模型。它通过利用图形处理单元 (GPU) 的强大功能来显着提高计算性能。
wget https://us.download.nvidia.cn/tesla/515.65.01/NVIDIA-Linux-x86_64-515.65.01.run
chmod +x ./NVIDIA-Linux-x86_64-515.65.01.run
./NVIDIA-Linux-x86_64-515.65.01.run
Centos 7 x86_64 通过 yum 安装 CUDA
官方文档,可以根据操作系统选择
yum-config-manager --add-repo https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
# 解决依赖 libnvidia-egl-wayland opencl-filesystem
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum clean all
yum -y install nvidia-driver-latest-dkms cuda
Centos 7 x86_64 通过二进制包安装 CUDA
官方文档,可以根据操作系统选择
yum-config-manager --add-repo https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
# 解决依赖 libnvidia-egl-wayland opencl-filesystem
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum clean all
yum -y install nvidia-driver-latest-dkms cuda
ubuntu 编译 nvidia FFmpeg
克隆 ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
安装 ffnvcodec
cd nv-codec-headers && make install && cd –
克隆 FFmpeg 并进行安装
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
安装必要的依赖软件包
apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev
配置并编译
./configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared --disable-x86asm
make -j 8
Centos 编译 nvidia FFmpeg
yum install -y https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.2.89-1.x86_64.rpm
yum install -y cuda-nvcc-11-0.x86_64 cuda-driver-devel-11-0.x86_64 cuda-11-0.x86_64