0

我正在开发一个利用 Amazon Chime 的视频会议应用程序。我已经关注了Amazon Chime SDK JS的 npm 页面,并设法获得了服务器响应并初始化了 meetingSession。但是,问题是当我尝试获取音频输出设备数组时,它在 Safari 上是长度为零的数组,而在 Chrome 和 Firefox 等浏览器中,它工作得很好,并且我得到了一个非零长度的数组。我该如何解决这个问题?

到目前为止,这是我编写的代码:

import {
  ConsoleLogger,
  DefaultDeviceController,
  DefaultMeetingSession,
  LogLevel,
  MeetingSessionConfiguration
} from 'amazon-chime-sdk-js';
 
const logger = new ConsoleLogger('MyLogger', LogLevel.INFO);
const deviceController = new DefaultDeviceController(logger);
 
// You need responses from server-side Chime API. See below for details.
const meetingResponse = /* Server response */;
const attendeeResponse = /* Server response */;
const configuration = new MeetingSessionConfiguration(meetingResponse, attendeeResponse);

const meetingSession = new DefaultMeetingSession(
  configuration,
  logger,
  deviceController
);

const audioInputDevices = await meetingSession.audioVideo.listAudioInputDevices();
const audioOutputDevices = await meetingSession.audioVideo.listAudioOutputDevices();
const videoInputDevices = await meetingSession.audioVideo.listVideoInputDevices();

/* Rest of the code... */

当我在控制台中记录上述数组的长度时,audioOutputDevices数组的长度在 Safari 中为零,而在其他浏览器中则为非零。

4

2 回答 2

0

默认情况下,Firefox 和 Safari 不启用输出/扬声器设备选择。因此,您必须更改默认设置:

以下步骤在 macOS Catalina (v: 10.15.7) 上进行了测试

a) Firefox: 这里讨论了这个问题:https ://github.com/bigbluebutton/bigbluebutton/issues/12471

  1. 在 url 栏中输入about:config
  2. 在搜索栏中搜索属性media.setsinkid.enabled并将其设置为 true
  3. 重新启动浏览器并测试(在浏览器中打开以下链接https://webrtc.github.io/samples/src/content/devices/input-output/)。您现在应该在 Audio Output Destination 的下拉列表中看到值

b) Safari(测试版本:14.1.2):

  1. 确保在右上角看到“开发”选项卡(如果没有,则启用它“ Safari > Preferences > Advanced ”,然后选中底部的“在菜单栏中显示开发菜单”)
  2. 导航到“开发 > 实验功能 > 允许扬声器设备选择”并确保选中“允许扬声器设备选择”
  3. 重新启动浏览器并在此处测试https://webrtc.github.io/samples/src/content/devices/input-output/

如果您想通知用户,则可以使用以下内容(伪代码):

ioDevices = await navigator.mediaDevices.enumerateDevices();
let outputDeviceSelectable = false;
for (let device: ioDevices) {
    if (device.kind == "audiooutput") {
        outputDeviceSelectable = true;
        break;
    }
}
if (outputDeviceSelectable == false) {
    show a pop up to the user to change the default settings
}
于 2021-10-14T23:08:42.300 回答
-1

根据Amazon Chime SDK 常见问题,这是一个已知问题:Firefox 和 Safari 存在已知问题,不允许它们在这些浏览器上列出音频输出设备。虽然客户可以使用默认设备继续会议,但他们将无法在会议中选择设备。

于 2020-08-14T02:27:17.407 回答