You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS平台PJSIP无法检测音频设备,呼叫报错PJMEDIA_EAUD_NODEFDEV

解决PJSIP iOS示例“无法找到默认音频设备”问题

错误日志

12:00:29.220            pjsua_aud.c  .Set sound device: capture=-1, playback=-2, mode=0, use_default_settings=0
12:00:29.221            pjsua_aud.c  ..Error retrieving default audio device parameters: Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV) [status=420006]
12:00:29.223          pjsua_media.c  .Call 0: deinitializing media..
12:00:29.223               call.cpp  pjsua_call_make_call(acc.getId(), &pj_dst_uri, param.p_opt, this, param.p_msg_data, &id) error: Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV) (status=420006) [../src/pjsua2/call.cpp:701]
pjsua_call_make_call(acc.getId(), &pj_dst_uri, param.p_opt, this, param.p_msg_data, &id) error: Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV)

原编译步骤

sudo make distclean

sudo make clean

export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/

export ARCH="-arch x86_64" CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0" LDFLAGS="-O2 -m32 -mios-simulator-version-min=5.0"

./configure-iphone

sudo make dep  

sudo make  

sudo make install

环境信息

  • PJSIP版本:2.13.1
  • macOS版本:Ventura 13.5
  • iOS版本:16.4

解决办法

1. 区分模拟器/真机重新编译PJSIP

原编译命令仅适配x86_64模拟器,且指定了过时的iOS最低版本(5.0),导致PJSIP无法兼容iOS 16的音频架构,需分别针对两种环境重新编译:

模拟器编译命令:

sudo make distclean && sudo make clean
export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/
export ARCH="-arch x86_64"
export CFLAGS="-O2 -mios-simulator-version-min=16.0"
export LDFLAGS="-O2 -mios-simulator-version-min=16.0"
./configure-iphone --enable-ios-framework
sudo make dep && sudo make && sudo make install

真机编译命令:

sudo make distclean && sudo make clean
export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/
export ARCH="-arch arm64"
export CFLAGS="-O2 -mios-version-min=16.0"
export LDFLAGS="-O2 -mios-version-min=16.0"
./configure-iphone --enable-ios-framework
sudo make dep && sudo make && sudo make install

2. 添加iOS音频权限

在项目的Info.plist中添加麦克风权限声明,否则应用无法访问系统音频设备:

  • 新增NSMicrophoneUsageDescription键,值为“需要麦克风进行语音通话”(可自定义说明)
  • 若使用蓝牙音频,需额外添加NSBluetoothAlwaysUsageDescription键

3. 手动指定音频设备(调试用)

初始化PJSIP Endpoint时,强制指定音频设备ID,跳过默认设备检测逻辑:

let epConfig = EpConfig()
// 强制使用系统第一个音频设备
epConfig.audioConfig.devConfig.captureDev = 0
epConfig.audioConfig.devConfig.playbackDev = 0

do {
    let ep = Endpoint()
    try ep.libInit(epConfig)
    // 后续初始化逻辑...
} catch {
    print("Endpoint初始化失败: \(error)")
}

4. 确认编译时启用音频驱动

编译时通过参数明确启用PJSIP音频模块,避免配置遗漏:

./configure-iphone --enable-ios-framework --enable-audio

注意:libasound2-dev是Linux平台的音频依赖库,完全不适用于iOS,无需在macOS上尝试安装。


内容的提问来源于stack exchange,提问作者Define

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:37:46