pjsip new-call 错误...无法找到默认音频设备 (PJMEDIA_EAUD_NODEFDEV)

Posted

技术标签:

【中文标题】pjsip new-call 错误...无法找到默认音频设备 (PJMEDIA_EAUD_NODEFDEV)【英文标题】:pjsip new-call error ... Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV) 【发布时间】:2013-05-10 13:39:22 【问题描述】:

当我尝试从 pjsip 建立新调用时收到此错误:

pjsua_aud.c ..Error retrieving default audio device parameters: Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV) [status=420006] Exception: Object: Account <sip:192.168.0.2:54496>, operation=make_call(), error=Unable to find default audio device (PJMEDIA_EAUD_NODEFDEV)

我安装了libasound2-dev:sudo apt-get install libasound2-dev,并重新编译了 pjsip,但它仍然给了我相同的结果..我在这里遗漏了什么吗?

注意我用的是Ubuntu 11.10,声音很好,没有问题,所以请不要告诉我声卡有问题


更新

我是这样配置和编译 pjsip 的:

$ ./配置

$ 制作 && 制作安装

像这样:

$ ./configure --enable-shared --disable-static --enable-memalign-hack

$ 制作 && 制作安装

还有这样的:

$ ./配置

$ make dep && make clean && make

所有方法都给了我相同的结果。


更新 2

我确保以下所有内容都已安装,但问题仍然存在:

sudo apt-get install portaudio19-dev libportaudio2 pulseaudio alsa-utils liboss4-salsa-dev alsa-base alsa-tools libasound2-plugins libasound2 libasound2-dev binutils binutils-dev libasound-dev pulseaudio-dev


更新 3

我像下面这样运行它,它起作用了:

pjproject-2.1.0/pjsip-apps/bin/pjsua-i686-pc-linux-gnu --capture-dev=-1 --playback-dev=-1

它可以呼叫对方。但是当我从 python 脚本运行它时,它会给我一个错误,即使我这样设置声音设备:

lib.init(log_cfg = pj.LogConfig(level=LOG_LEVEL, callback=log_cb))
snd_dev = lib.get_snd_dev()
print snd_dev ## returns (-1,-2)
lib.set_snd_dev(0,0)

错误是:

12:39:55.753 os_core_unix.c !pjlib 2.1 for POSIX 已初始化 12:39:55.754 sip_endpoint.c .创建端点实例... 12:39:55.754 pjlib .select() I/O 队列已创建 (0x93f1a80) 12:39:55.754 sip_endpoint.c .Module "mod-msg-print" 注册 12:39:55.754 sip_transport。 .Transport 管理器创建。 12:39:55.754 pjsua_core.c .PJSUA 状态已更改:NULL --> CREATED 12:39:55.769 pjsua_core.c .pjsua 2.1 版,适用于 Linux-3.0.0.17/i686/glibc-2.13 初始化 (-1, -2) 12:39:55.770 pjsua_aud.c .Error 检索 默认音频设备参数:无效的音频设备 (PJMEDIA_EAUD_INVDEV) [status=420004] 例外:对象:Lib, operation=set_current_sound_devices(), error=无效的音频设备 (PJMEDIA_EAUD_INVDEV)

但奇怪的是,当我用这条线 lib.set_null_snd_dev() 替换 lib.set_snd_dev(0,0) 时,声音当然不起作用,因为我将声音设备设置为 null !!!

【问题讨论】:

我不知道你提到的软件,但只是谷歌搜索该错误似乎很常见,看起来你错过了配置中的某些内容。您是否尝试查看 pjsip 资源? compiling for Linux 有一个,troubleshooting 有另一个。它们看起来很有帮助。 不确定您到底在说什么,谢天谢地,我尝试了您提到的页面中的内容,但没有任何效果..请在问题中查看我的更新 【参考方案1】:

当未安装 开发包 时会发生这种情况。从您的错误消息中,我可以看出 libasound-development-package 未安装。执行以下操作:

sudo apt-get install libasound2-dev

请注意 pjsip 仍然无法设置默认音频设备,因为您已经完成了make,因为缺少此包。 所以你需要再次构建 Pjsip

在pjsip目录下分别做如下操作:

./configure
make dep 
make clean
make
make install

就可以了。

【讨论】:

+1 谢谢。出站呼叫将失败,因为它没有检测到音频设备。这现在适用于 Ubuntu 12.04 在 Ubuntu 18.04 中遇到同样的问题。之前通过使用相同的步骤,系统更早地工作,但现在不知道为什么,但即使在执行相同的步骤后它也不起作用。 我面临同样的问题,我使用的是 Mac OS。根据 pjsip.org 遵循所有说明。每当我从示例应用程序触发呼叫时,都会遇到同样的问题。但我无法在我的 Mac OS 系统中安装 libasound2-dev。请帮我解决这个问题。谢谢【参考方案2】:

在另一篇文章中,我发现您可能还想检查您是否拥有这些软件包并进行重建。让我知道这对你有什么好处。

    安装所需的开发包!像pulseaudio-dev, alsa-dev、portaudio-dev 或任何你想要的(都在怀疑中!) 重新启动配置和构建! (配置、制作...) 再次访问 pjsip-apps/src/python 并执行 make / make all,同样在 ../py_pjsua

pa_dev.c ..声音设备计数 现在应该会吐出更多设备...

【讨论】:

您好@theagent,感谢您在这里的贡献:),我安装了世界上所有的软件包,我在我的问题中修改了我在Update2中安装的软件包列表,重新配置,重新制作......还是一样的:(【参考方案3】:

您可以将虚拟声卡安装到 ubuntu 并使其正常工作,如本解决方案中所述,https://***.com/a/40095791/7242275

你必须安装安装这些包sudo apt-get install pulseaudio jackd2 alsa-utils dbus-x11并重建pjsip,就是这样!

【讨论】:

【参考方案4】:

好吧,只是一个猜测(我现在无法在我的 PC 上尝试),但你真的不需要将你的声音设备设置为 get_snd_dev 获得的值吗?至少这似乎是合理的。所以不是

lib.set_snd_dev(0,0)

尝试用 (-1, -2) 元组调用它:

lib.set_snd_dev(-1,-2)

【讨论】:

嗨伙计,它有什么不同,为什么它应该与 (-1,-2) 一起使用?我不完全明白。

以上是关于pjsip new-call 错误...无法找到默认音频设备 (PJMEDIA_EAUD_NODEFDEV)的主要内容,如果未能解决你的问题,请参考以下文章

无法编译 - PJSIP - VOIP 应用程序

无法编译-PJSIP-VOIP应用程序

在 iOS 应用中集成 pjsip

如何在 Visual Studio 中将 pjsip 构建为 DLL?

即使在使用NDK_TOOLCHAIN_VERSION = 4.9后,android PjSip 2.8也无法为armeabi-v7a,X86_64构建

pjsip链接错误Xcode 5