操作系统 Ubuntu 22.04.1 ffmpeg 版本 N-109649-gab8cde6efa
我从官方来源安装了 GPU 驱动程序。
wget https://international.download.nvidia.com/XFree86/Linux-x86_64/525.78.01/NVIDIA-Linux-x86_64-525.78.01.run
chmod +x NVIDIA-Linux-x86_64-525.78.01.run
sudo ./NVIDIA-Linux-x86_64-525.78.01.run
并从源代码编译 ffmpeg 以启用硬件编码。
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
cd ffmpeg
./configure --enable-libfribidi --enable-libfontconfig --enable-filter=drawtext --enable-gpl --enable-libx264 --enable-libfreetype --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
make -j $(nproc)
sudo mv ffmpeg /usr/bin
这是 nvtop 的输出
尽管使用相同的命令和相同的文件,但 GPU 0 的 GPU 使用率远低于 GPU 1。GPU 0 插入第一个 PCI-E 16x 插槽,GPU 1 插入下一个 PCI-E 16x 慢速插槽。
输入视频是 H.264 1080P 30FPS 视频。这是我用来编码视频的命令。
ffmpeg -hide_banner -y \
-hwaccel cuda \
-hwaccel_device $hwaccel_device \
-i tmp/videos/$2/$1.mp4 \
-filter:v fps=30 \
-threads 16 \
-c:a aac \
-ar 48000 \
-c:v h264_nvenc \
-profile:v main \
-crf 20 \
-sc_threshold 0 \
-vf scale=w=1920:h=1080:force_original_aspect_ratio=decrease \
-b:v 5000k \
-maxrate 4500000 \
-bufsize 4500000 \
-b:a 192k \
tmp/videos/$2/$1_1080p.mp4
为什么 GPU 0 的使用率比 GPU 1 低得多?同样值得注意的是,CPU 确实有板载显卡,而我用它来驱动显示器,因此 GPU 应该专用于编码。
答案1
您找错地方了。
NVENC 不使用 GPU 的 CUDA 核心。在您的屏幕截图中,“ENC”在设备 0 上显示为 100%,在设备 1 上显示为 97%。