M1 Mac使用GStreamer将RTP流转HLS时提示无fdkaacenc元素怎么解决?
问题解决步骤
1. 问题根本原因
fdkaacenc 编码器属于GStreamer的libav插件集,不在你已经安装的base/good/bad/ugly四个常规插件包中,且M1架构的macOS下Homebrew默认打包的GStreamer没有集成该编码器,因此会报找不到组件的错误。
2. 修复方案
方案一:安装缺失的fdkaac相关依赖
- 首先安装fdk-aac基础库:
brew install fdk-aac
- 再安装GStreamer的libav插件包:
brew install gst-libav
- 安装完成后执行命令验证组件是否可用,有参数输出说明安装成功:
gst-inspect-1.0 fdkaacenc
方案二:替换为macOS原生AAC编码器(更适配M1设备,推荐)
如果你不想额外安装依赖,可以直接把管道中报错位置的fdkaacenc替换为苹果原生的aacenc组件,修改对应代码行即可:
# 修改前 rtpbin.recv_rtp_sink_1 rtpbin. ! queue ! rtpopusdepay ! opusdec ! fdkaacenc ! mux. # 修改后 rtpbin.recv_rtp_sink_1 rtpbin. ! queue ! rtpopusdepay ! opusdec ! aacenc ! mux.
原生编码器在M1设备上支持硬件加速,编码性能比fdkaacenc表现更好。
3. 异常排查
如果安装完依赖后还是提示找不到组件,执行以下命令刷新GStreamer插件缓存即可:
gst-inspect-1.0 --gst-plugin-path=/opt/homebrew/lib/gstreamer-1.0/
注:M1芯片Mac的Homebrew默认路径为
/opt/homebrew,如果是Intel架构设备,路径替换为/usr/local即可。
内容的提问来源于stack exchange,提问作者Hadi Aghandeh
相关产品推荐
相关产品推荐

