c++ - pjsip 新调用错误...无法找到默认音频设备 (PJMEDIA_EAUD_NODEFDEV)

标签 c++ python c sip pjsip

当我尝试从 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 initialized 12:39:55.754 sip_endpoint.c .Creating endpoint instance... 12:39:55.754 pjlib .select() I/O Queue created (0x93f1a80) 12:39:55.754 sip_endpoint.c .Module "mod-msg-print" registered 12:39:55.754 sip_transport. .Transport manager created. 12:39:55.754 pjsua_core.c .PJSUA state changed: NULL --> CREATED 12:39:55.769
pjsua_core.c .pjsua version 2.1 for Linux-3.0.0.17/i686/glibc-2.13 initialized (-1, -2) 12:39:55.770 pjsua_aud.c .Error retrieving default audio device parameters: Invalid audio device (PJMEDIA_EAUD_INVDEV) [status=420004] Exception: Object: Lib, operation=set_current_sound_devices(), error=Invalid audio device (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

这样就可以了。

关于c++ - pjsip 新调用错误...无法找到默认音频设备 (PJMEDIA_EAUD_NODEFDEV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483635/

相关文章:

c++ - 将 char* 复制到 char*

c++ - C/C++ 转换函数与表达式不同?

c++ - wxSpinCtrl 不生成事件

python - 有条件地将字典条目从第二个字典添加到新字典,同时保留新的字典键

c - Mac OS X 中的多线程

c - 非常简单的代码中的指针问题、参数错误和一般问题

C++ va_arg 类型转换问题

python - argparse(和已弃用的 optparse)如何在 bash 中响应 python 程序名称后的 'tab' 按键?

python - 如何在Python中将结构体传递给Linux设备节点?

使用 RDTSC 在 C 中计算 CPU 频率总是返回 0