Windows10下FFmpeg h264_amf编码CreateComponent失败的解决方法
解决FFmpeg使用h264_amf硬件编码时出现Error 36的问题
错误CreateComponent(AMFVideoEncoderVCE_AVC) failed with error 36本质是AMF编码器组件初始化失败,核心原因集中在显卡兼容性、参数支持、驱动组件这几个方面,以下是具体解决步骤:
1. 确认显卡是否支持h264_amf编码
- h264_amf是AMD专属硬件编码器,仅支持GCN 2代及以上架构的AMD显卡(对应Radeon HD 7000系列、Radeon R200系列及以后型号)。如果是NVIDIA或Intel显卡,直接替换为对应编码器:
- NVIDIA显卡用
h264_nvenc - Intel显卡用
h264_qsv
- NVIDIA显卡用
- 可通过
dxdiag命令查看显卡型号,核对AMD官方VCE编码支持列表。
2. 检查输入视频参数是否超出编码器范围
部分AMD显卡的AMF编码器对分辨率、帧率有严格限制:
- 老显卡不支持奇数分辨率(如1921×1080),或过高帧率(如超过60fps)
- 先执行
ffmpeg -i <input_file>查看输入视频的分辨率、帧率,若参数不符合要求,添加调整参数:# 缩放为1920×1080,帧率设为30 ffmpeg -i <input_file> -v verbose -c:v h264_amf -vf scale=1920:1080 -r 30 -acodec copy -y <output_file>
3. 更新AMD显卡驱动及AMF组件
- 必须安装官方完整版AMD Adrenalin驱动,第三方精简驱动可能缺失AMF编码组件。驱动安装完成后重启系统,确保AMF服务正常运行。
- 若已安装驱动,尝试卸载后重新安装,避免驱动损坏导致的组件异常。
4. 显式指定编码器兼容参数
部分情况下,默认参数可能触发编码器不支持的模式,显式指定预设或码率控制模式可解决问题:
# 指定medium预设,使用CBR码率控制(老显卡常用兼容模式) ffmpeg -i <input_file> -v verbose -c:v h264_amf -preset medium -rc cbr -acodec copy -y <output_file>
5. 验证FFmpeg的AMF支持完整性
- 执行
ffmpeg -encoders | findstr amf,确认输出中存在h264_amf编码器。如果没有,说明当前FFmpeg构建版本未启用AMF支持,更换为gyan.dev的full_build版本(essentials_build可能精简了部分硬件编码组件)。
内容的提问来源于stack exchange,提问作者wallllaw100
相关产品推荐
相关产品推荐

