M1芯片Mac上FFmpeg使用hevc_videotoolbox编码器失败的解决办法咨询
M1芯片Mac上FFmpeg使用hevc_videotoolbox编码器失败的解决办法咨询
我来帮你梳理下这个问题的解决思路,我自己在M1系列的Mac上也碰到过类似的视频编码问题,给你几个可行的方案试试:
首先试试错误提示里的快速解决方案
报错信息里已经给出了明确提示:Try -allow_sw 1. The hardware encoder may be busy, or not supported.,你可以直接在命令里加上这个参数,让FFmpeg在硬件编码器无法使用时自动切换到软件编码备选:
ffmpeg -i input.MP4 -c:v hevc_videotoolbox -allow_sw 1 -b:v 2000000 -s 1280x720 output.mp4
这个参数可以直接规避“无法创建压缩会话”的问题,先验证下这个方案是否能正常工作。
排查深层原因
如果加了-allow_sw 1后只能用软件编码(速度较慢),可以再排查下面几个可能的原因:
- 硬件编码器被占用:Apple Silicon的视频编码硬件同一时间可能只能被一个应用占用,如果你的Mac上正在运行Final Cut Pro、QuickTime剪辑、其他视频转码工具,先关闭这些应用,再重新运行FFmpeg命令试试。
- FFmpeg版本/编译配置问题:你当前的FFmpeg可能没有正确启用VideoToolbox的HEVC支持,可以先检查一下:
- 运行
ffmpeg -hwaccels,查看输出里是否有videotoolbox选项 - 运行
ffmpeg -encoders | grep hevc,确认是否存在hevc_videotoolbox编码器
如果没有的话,建议用Homebrew重新安装最新版的FFmpeg:
Homebrew官方编译的FFmpeg默认会开启VideoToolbox相关的硬件加速支持。brew reinstall ffmpeg - 运行
- 参数兼容性问题:M1的VideoToolbox对部分分辨率或码率参数可能有兼容性限制,你可以先去掉
-s 1280x720参数,不强制缩放分辨率,直接尝试编码,看是否能正常创建硬件编码会话。
另外你提到不加-c:v就正常,这是因为FFmpeg会自动选择默认的软件HEVC编码器(比如libx265),虽然能工作但速度远不如硬件编码,所以还是建议优先解决硬件编码的问题。
备注:内容来源于stack exchange,提问作者skorphil




