问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FFmpeg硬件加速视频转码指南

创作时间:
2025-03-29 00:13:31
作者:
@小白创作中心

FFmpeg硬件加速视频转码指南

引用
1
来源
1.
https://www.cnblogs.com/xlfqrxlf/p/16879357.html

本文将详细介绍如何在Windows系统下使用FFmpeg进行视频硬件加速转码。通过对比CPU转码和硬件加速的效果,以及具体演示如何使用CUDA、Intel QSV等硬件加速方法,帮助读者掌握高效视频转码技巧。

系统环境

基于Windows演示,Linux下也可以适用。所使用FFmpeg版本为BtbN编译的win64-gpl版(非gpl-share),项目地址:BtbN / FFmpeg-Builds。也可以使用gyan.dev编译的git-full版,地址:gyan.dev,都是官方推荐的。所使用的测试片段是一段相机录制的h264编码的100兆码率的4k 25帧的视频。

默认CPU转码

在默认情况下,不加任何参数,会直接使用CPU编解码:

ffmpeg -i input.mp4 output.mp4

可以看到转码速度是相对比较慢的,并且过程中CPU是处于100%使用率的。

尝试使用硬件加速编解码

首先通过命令查看所支持的硬件加速方法:

ffmpeg -hwaccels

如果你是在Windows平台并且使用的是我所提到的那两个版本,那么结果应该和下图相同,Linux下的版本可能会略有不同。通过加上参数-hwaccel可以指定硬件加速方法。如果你的是N卡,可以选择cuda,如果是Intel核显,可以选择qsv,(印象里还有一个A卡的amf)。

自动硬件加速

ffmpeg -hwaccel auto -i input.mp4 output.mp4

可以看到在自动的设置下选择了dxva2为硬件加速方法,但是从提升上看并不明显,调用了显卡很小一部分解码器,CPU依然满载。

CUDA硬件加速

ffmpeg -hwaccel cuda -i input.mp4 output.mp4

可以看到速度与auto设置下类似,实际情况也是只调用了显卡的部分解码能力,CPU依然满载。

手动指定视频的编解码器

查看支持的编解码器

通过命令查看所支持的h264编解码器:

ffmpeg -codecs | findstr "h264"

从图中可以看到decoders(解码器,对应input文件的编码)和encoders(编码器,对应output文件的编码)。

decoders中:

  • h264_qsv是Intel核显/显卡专用的硬件加速解码器
  • h264_cuvid是N卡专用的解码器

encoders中:

  • h264_amf和h264_mf都是A卡专用的编码器
  • h264_qsv对应I卡
  • h264_nvenc对应N卡

测试

(由于我的笔记本的核显出厂被屏蔽了,因此只能使用N卡硬件加速测试,如果你的核显能用,可以试试,说不定不比独显编解码慢)

使用-c:v参数来指定视频的编解码器,这里c是codec的缩写,v是指video,处理音频编码可以替换为a (audio)。

ffmpeg -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc output.mp4

注意:指定解码器-c:v h264_cuvid必须放在输入文件-i input.mp4之前,否则无效。

可以看到确实使用了指定的硬件编解码器,在编解码的过程中也充分调用了显卡的硬件编解码器,CPU也维持在一个很低的占用。

可以看到转码的速度提升非常大,但是存在一个问题就是这个编码器的默认设置下码率只有2000k,实际输出的视频画质也降低了很多。

手动指定视频码率

通过加入-b:v参数(这里b指bitrate,v同理指video视频),可以手动指定视频的码率,以提升画质。

(这里码率的值只是作为演示,码率是清晰度的决定因素之一,码率越高越清晰,但体积也相应增大。想要深入了解可以自行查阅相关资料)

ffmpeg -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -b:v 10000k output.mp4

可以看到转码速度依然很快,并且画质也没有太大的损失。并且可以看到GPU的硬件编解码器是被充分利用了的,CPU也维持在一个很低的占用。

总结

本文只是简单介绍了如何利用硬件编解码器加速视频转码。最好是你了解视频编码、封装等相关的基础知识,那么在看了之后你应该也会了其他的视频编码之间的相互转换。关于FFmpeg更高级的使用方法也可以参考官方文档。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号