注意:本帖讨论的是硬编,不是硬解
使用下面的命令可以列出 ffmpeg 中所有的编码器
ffmpeg -encoders
这个帖子整理一下ffmpeg中支持GPU硬件加速的编码器。
如果你的GPU支持硬件加速,则可以使用非默认的编码器来提高转码速度。就我本人在笔记本平台Intel低压U的使用经验,ffmpeg在开启核显硬件加速后可以降低30%的CPU占用,并且节约70%~80%的转码时间。
三大桌面GPU厂商以及苹果的硬件编、解码器进化历程表
在下面的三组表格中,可以查询到自己GPU硬件支持的编码格式:
看起来Intel的核显虽然3D性能一直拉跨,硬件编码器却一直给得非常厚道,某些特殊编码的视频渲染似乎是得独显核显全都要才能最大化效率
Windows
(版本:ffmpeg 5.0)
默认编码器 | AMD硬件加速 | Intel硬件加速 | Nvidia硬件加速 | |
H.264/AVC | libx264 | h264_amf | h264_qsv | h264_nvenc nvenc nvenc_h264 |
H.265/HEVC | libx265 | hevc_amf | hevc_qsv | hevc_nvenc nvenc_hevc |
MJPEG | mjpeg | mjpeg_qsv | ||
MPEG-2 | mpeg2video | mpeg2_qsv | ||
VP8 | libvpx | |||
VP9 | libvpx-vp9 | vp9_qsv |
对比本表格与上面的硬件支持表格,可以发现Intel比较新的GPU硬件上支持VP8编码,但ffmpeg for Windows软件上并没有做适配
macOS (Intel & Apple Silicon)
(版本:ffmpeg 5.0)
默认编码器 | Intel硬件加速 | Apple Silicon硬件加速 | |
H.264/AVC | libx264 libopenh264 |
h264_videotoolbox | h264_videotoolbox |
H.265/HEVC | libx265 | hevc_videotoolbox | hevc_videotoolbox |
VP8 | libvpx | ||
VP9 | libvpx-vp9 | ? | ? |
ProRes | prores prores_aw prores_ks |
prores_videotoolbox |
ffmpeg5.0更新说是新增了VP9和ProRes的硬件加速,不过我安装的1月17号的build只找到了ProRes
Linux (x86)
(版本:ffmpeg 4.3)
默认编码器 | AMD硬件加速 | Intel硬件加速 | Nvidia硬件加速 | |
H.264/AVC | libx264 | h264_vaapi h264_omx |
h264_vaapi | h264_nvenc nvenc nvenc_h264 |
H.265/HEVC | libx265 | ?hevc_vaapi | hevc_vaapi | hevc_nvenc nvenc_hevc |
MJPEG | mjpeg | mjpeg_vaapi | ||
MPEG-2 | mpeg2video | mpeg2_vaapi | ||
VP8 | libvpx | vp8_vaapi | ||
VP9 | libvpx-vp9 | vp9_vaapi |
注:ffmpeg对于Intel GPU有完整的VAAPI支持,而对于AMD GPU的支持是不完整的:
H.264 encode is working on GCN GPUs, but is still incomplete. No other codecs are supported by Mesa for encode yet.
Encoding and interlacing support in Mesa are incompatible because of the data layout in GPU memory. By default, frames are separated into fields and interlaced video is supported but encoding is not. Set the environment variable VAAPI_DISABLE_INTERLACE to 1 to be able to use the encoder (but without any interlaced video support.
不过考虑到ffmpeg的官方Wiki并不是实时更新,我也不确定最新的AMD GPU在最新的Linux驱动下是不是已经支持HEVC硬件加速编码了
树莓派
树莓派并不是一个设计来转码的设备,其GPU的硬件编码器部分只支持非4K分辨率的H.264视频
默认编码器 | 树莓派硬件加速 | |
H.264/AVC | libx264 | h264_omx |