sudo启动Flutter程序AMD初始化失败

cmd 复制代码
Fatal error in: ../../media/engine/adm_helpers.cc, line 39
last system error: 88
Check failed: 0 == adm->Init() (0 vs. -1)
Failed to initialize the ADM.

这个报错是WebRTC/音频设备初始化失败的典型错误,尤其是在Linux下用sudo启动GUI程序时常见。

  • ADM = Audio Device Module(音频设备模块)
  • adm->Init()失败意味着程序无法访问音频设备
  • 原因:用sudo启动桌面程序时:
    • ** root用户没有访问普通用户的PulseAudio / ALSA 的权限**
    • 桌面程序依赖的 X11/Wayland session 环境变量 ($DISPLAY$XDG_RUNTING_DIR等)通常属于普通用户。
  • Linux 下用sudo启动GUI程序 + 音频,大概率会报ADM初始化失败。

在 Linux 上,用 root 运行GUI + 音频程序几乎总会遇到ADM初始化失败的问题,通常只监听或操作不涉及GUI/音频的部分,用普通用户跑最简单。

我用了一些方法可以正常去初始化ADM,但与我要解决的问题背道而驰。

我是想sudo启动,让自动化测试工具可以监听到。

尝试多种方法后,最后我直接干掉了:flutter_webrtc插件。

  • WebRTC 在 Linux 上会尝试初始化 音频/视频设备
  • 如果 sudo 运行: - PulseAudio / PipeWire 的 socket 在普通用户目录 /run/user/UID/... - sudo 会切换到 root,导致 UID 不匹配 -> ADM 初始化失败
  • 也就是sudo下WebRTC尝试访问音频设备就报#39 ADM错误
相关推荐
松☆2 小时前
集成 Flutter 到 OpenHarmony(嵌入方式)实战:编写你的第一个混合页面
flutter
松☆2 小时前
OpenHarmony 原生能力深度调用:从 Flutter 调用相机、定位与文件系统实战
数码相机·flutter
Jk_Mr2 小时前
Linux-进程状态
linux·操作系统·进程
_F_y2 小时前
Linux:进度条编写
linux
吃好喝好玩好睡好2 小时前
OpenHarmony+Electron+Flutter:构建轻量化VR/AR跨端交互应用指南
flutter·electron·vr
mooyuan天天2 小时前
Cobalt Strike渗透生成 linux http Beacon不生效bug分析与解决方法
linux·内网渗透·横向移动·cobalt strike
赖small强2 小时前
【音视频开发】Linux 平台图像处理与视频录制全流程指南 (Ingenic T41)
linux·图像处理·音视频·isp·视频录制
w我是东山啊2 小时前
ARP的具体过程和ARP欺骗
linux·服务器·网络
橙露2 小时前
PLC编程语言大比拼:特性解析与场景选型指南
大数据·linux·运维
晚霞的不甘3 小时前
Flutter + OpenHarmony UI 设计规范:打造整齐、美观、一致的全场景体验
flutter·ui·设计规范