我正在使用 pjsua2 进行这个新项目,它在计算机上有两个声音设备,我想独立使用它们,但是在 linux 中,当我插入另一个声卡时,第二个成为默认声卡。所以我无法在第一张声卡上传输,我试图获取音频设备的数量,如下所述: Audio Device API
来源是:
int dev_count;
pjmedia_aud_dev_index dev_idx;
pj_status_t status;
dev_count = pjmedia_aud_dev_count();
printf("Got %d audio devices\n", dev_count);
for (dev_idx=0; dev_idx<dev_count; ++i) {
pjmedia_aud_dev_info info;
status = pjmedia_aud_dev_get_info(dev_idx, &info);
printf("%d. %s (in=%d, out=%d)\n",
dev_idx, info.name,
info.input_count, info.output_count);
}
我得到以下输出:
Got 32 audio devices
0. default (in=1, out=1)
1. jack (in=0, out=0)
2. pulse (in=1, out=1)
3. hdmi:CARD=HDMI,DEV=0 (in=0, out=1)
4. hdmi:CARD=HDMI,DEV=1 (in=0, out=1)
5. hdmi:CARD=HDMI,DEV=2 (in=0, out=1)
6. hdmi:CARD=HDMI,DEV=3 (in=0, out=1)
7. hdmi:CARD=HDMI,DEV=4 (in=0, out=1)
8. dmix:CARD=HDMI,DEV=3 (in=0, out=1)
9. dmix:CARD=HDMI,DEV=7 (in=0, out=1)
10. dmix:CARD=HDMI,DEV=8 (in=0, out=1)
11. dmix:CARD=HDMI,DEV=9 (in=0, out=1)
12. dmix:CARD=HDMI,DEV=10 (in=0, out=1)
13. dsnoop:CARD=HDMI,DEV=3 (in=0, out=0)
14. dsnoop:CARD=HDMI,DEV=7 (in=0, out=0)
15. dsnoop:CARD=HDMI,DEV=8 (in=0, out=0)
16. dsnoop:CARD=HDMI,DEV=9 (in=0, out=0)
17. dsnoop:CARD=HDMI,DEV=10 (in=0, out=0)
18. hw:CARD=HDMI,DEV=3 (in=0, out=1)
19. hw:CARD=HDMI,DEV=7 (in=0, out=1)
20. hw:CARD=HDMI,DEV=8 (in=0, out=1)
21. hw:CARD=HDMI,DEV=9 (in=0, out=1)
22. hw:CARD=HDMI,DEV=10 (in=0, out=1)
23. plughw:CARD=HDMI,DEV=3 (in=0, out=1)
24. plughw:CARD=HDMI,DEV=7 (in=0, out=1)
25. plughw:CARD=HDMI,DEV=8 (in=0, out=1)
26. plughw:CARD=HDMI,DEV=9 (in=0, out=1)
27. plughw:CARD=HDMI,DEV=10 (in=0, out=1)
28. usbstream:CARD=HDMI (in=0, out=0)
29. sysdefault:CARD=PCH (in=0, out=1)
30. front:CARD=PCH,DEV=0 (in=0, out=1)
31. surround21:CARD=PCH,DEV=0 (in=0, out=0)
但是当我拔下第二个音频声卡时,结果是一样的。
有没有什么方法可以在 PJSUA 中的两张声卡之间切换和选择,然后选择其中一张来打电话?我的项目的目标是有时使用一个声卡进行传输,而在其他时间使用另一个声卡,两者都用于进行语音通话。
PJSUA 文档描述了如何按照此处所述获取音频媒体设备,但是当我调用获取媒体大小功能时,我总是收到 1!,因此我无法在两个声卡之间切换或选择。