【笔记】使用FFmpeg调用NVIDIA GPU压制视频

一、背景

最近需要高效的压制H.265视频,使用 FFmpeg 软件编解码速度较慢,想通过GPU加速压制过程。

二、环境部署

  1. 确保电脑显卡在此列表上:https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
  2. 下载并安装 CUDA Toolkit:https://developer.nvidia.com/cuda-downloads
  3. 已下载最新版FFmpeg:https://ffmpeg.org/download.html
  4. 执行命令查看所有可用的硬件加速器
ffmpeg -hwaccels

这里可以看到,我们需要的 CUDA 已经有了。

  1. 执行命令查看查看编解码器
ffmpeg -codecs

h264_nvenc是H.264硬件编码器 hevc_nvenc是H.265硬件编码器

三、压制命令

  1. 部分硬件转码
ffmpeg -i input.mp4 -c:v hevc_nvenc -crf 23 -c:a copy -vtag hvc1 output.mp4
# -i 后填写输入素材的路径
#输入素材为H.265视频,-c:v 使用对应解码器hevc_nvenc;
#CRF中的质量的范围可以是1.0 - 51.0。一般设置21-25之间就可以,此值越大码率越低。
#声音流这里直接copy了,未压制。
#输出视频为H.265。
  1. 全硬解码需要加上-hwaccel cuda,实例:
ffmpeg -hwaccel cuda -i input.mp4 -c:v hevc_nvenc -crf 23 -c:a copy -vtag hvc1 output.mp4

待更新...