ffmpeg使用本地GPU加速(AMD和NVIDIA)

ffmpeg基础解码编码信息查看

  • 查看硬件加速的相关信息
shell 复制代码
ffmpeg -hwaccels
---------
cuda
dxva2
qsv
d3d11va
opencl
vulkan
  • 编码器支持信息查看
shell 复制代码
ffmpeg -encoders >encoders.txt
objectivec 复制代码
 V.S... h263p                H.263+ / H.263-1998 / H.263 version 2
 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V....D h264_amf             AMD AMF H.264 Encoder (codec h264)
 V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... libx265              libx265 H.265 / HEVC (codec hevc)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V....D hevc_amf             AMD AMF HEVC encoder (codec hevc)
  • 解码器支持信息查看
shell 复制代码
ffmpeg -decoders >  decoders.txt
scss 复制代码
 V...BD h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 V...BD h263i                Intel H.263
 V...BD h263p                H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 V....D h264_qsv             H264 video (Intel Quick Sync Video acceleration) (codec h264)
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 VFS..D hap                  Vidvox Hap
 VFS..D hevc                 HEVC (High Efficiency Video Coding)
 V....D hevc_qsv             HEVC video (Intel Quick Sync Video acceleration) (codec hevc)
 V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
 V....D hnm4video            HNM 4 video
 V....D hq_hqa               Canopus HQ/HQA

利用 AMD GPU加速

  • 首先电脑安装 AMD显卡驱动
  • 安装 anROCm:ROCm 是 AMD 提供的用于 GPU 加速计算的开发平台,选择适配你自己当前本子的包即可(RoCm下载地址
  • 电脑安装ffmpeg,最好是最新版本,因此老版本有些不支持

加速示例

  • 普通非加速视频格式转换

这里一定选择 -c:v 编码为非copy,因为这样才能区分开CPU的波动,否则无法直接copy原来解码的格式则CPU消耗不大的。

shell 复制代码
ffmpeg -i input.mp4 -c:v h264 output.mp4
  • CPU和GPU利用率查看

  • 使用AMD加速编码格式

shell 复制代码
ffmpeg -i input.mp4 -c:v h264_amf output.mp4
  • CPU和GPU利用率查看

利用 英伟达 GPU

  • 首先安装对应的显卡驱动
  • 安装 cuda,因为ffmpeg调用也需要cuda计算的API
  • ffmpeg版本最好也是最新的

加速编码示例

shell 复制代码
ffmpeg  -i input.mp4 -c:v h264_nvenc -b:v 2048k -s 1920x1080 output.mp4
  • 如果出现以下API相关的错误 则要么 cuda没有安装 要么版本不匹配
  • 其他错误 比如 ffmpeg版本不对,没法用cuda的API如下
相关推荐
uhakadotcom23 分钟前
OpenTelemetry入门:让你的应用程序更透明
后端·面试·github
橘猫云计算机设计31 分钟前
基于springboot的考研成绩查询系统(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·python·考研·django·毕业设计
有一只柴犬1 小时前
深入Spring AI:6大核心概念带你入门AI开发
spring boot·后端
Aurora_NeAr1 小时前
深入理解Java虚拟机-垃圾收集器与内存分配策略
后端
向阳2561 小时前
SpringBoot+vue前后端分离整合sa-token(无cookie登录态 & 详细的登录流程)
java·vue.js·spring boot·后端·sa-token·springboot·登录流程
你的人类朋友1 小时前
JS严格模式,启动!
javascript·后端·node.js
Aurora_NeAr1 小时前
深入理解Java虚拟机-Java内存区域与内存溢出异常
后端
风象南1 小时前
SpringBoot实现数据库读写分离的3种方案
java·spring boot·后端
lzj20141 小时前
DataPermissionInterceptor源码解读
后端
ChinaRainbowSea2 小时前
3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列
java·分布式·后端·rabbitmq·ruby·java-rabbitmq