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)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中将 pjsip 构建为 DLL?
即使在使用NDK_TOOLCHAIN_VERSION = 4.9后,android PjSip 2.8也无法为armeabi-v7a,X86_64构建