当我尝试从 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:
$ ./配置
$ make && make install
像这样:
$ ./configure --enable-shared --disable-static --enable-memalign-hack
$ make && make install
还有这样的:
$ ./配置
$ 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 .模块“mod-msg-print”已注册 12:39:55.754 sip_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 检索时出错 默认音频设备参数:无效的音频设备 (PJMEDIA_EAUD_INVDEV)[状态=420004]异常:对象:Lib, 操作=set_current_sound_devices(),错误=无效的音频设备 (PJMEDIA_EAUD_INVDEV)
但是奇怪的是,当我用这行
lib.set_snd_dev(0,0)
替换lib.set_null_snd_dev()
时,但是声音当然不起作用,因为我将声音设备设置为空!!!
未安装开发包时会发生这种情况。从您的错误消息中我可以看出 libasound-development-package 未安装。执行以下操作:
sudo apt-get install libasound2-dev
请注意,pjsip 仍然无法设置默认音频设备,因为您已经完成了
make
,因为缺少此软件包。
所以你需要再次构建Pjsip
在pjsip目录分别执行以下操作:
./configure
make dep
make clean
make
make install
这样就可以了。
从另一篇文章中,我发现您可能还想检查您是否拥有这些软件包并进行重建。让我知道你的情况如何。
pa_dev.c ..声音设备计数 现在应该吐出更多设备...
您可以将虚拟声卡安装到 ubuntu 并使其正常工作,如本解决方案中所述,https://stackoverflow.com/a/40095791/7242275
你必须安装这些软件包
sudo apt-get install pulseaudio jackd2 alsa-utils dbus-x11
并重建pjsip,就是这样!
我也遇到了完全相同的问题。我创建了目录 ~/pjproject 和 ~/pjproject/exec 用于构建输出(包括可执行文件)。比我用
构建pjproject./configure CFLAGS="-fPIC" --prefix=~/pjproject --exec-prefix=~/pjproject/exec --enable-shared
这里的一切都归我的用户所有。我将此目录添加到共享库搜索路径中
export LD_LIBRARY_PATH=/home/youruser/pjproject/exec/lib
希望这有帮助。
嗯,只是一个猜测(我现在无法在我的电脑上尝试),但是您实际上不需要将声音设备设置为
get_snd_dev
获得的值吗?这至少看起来是合理的。所以而不是
lib.set_snd_dev(0,0)
尝试用 (-1, -2) 元组调用它:
lib.set_snd_dev(-1,-2)