会议中所有用户的音频在录制时均未捕获

问题描述 投票:2回答:1

因此,我正在使用navigator.getDisplayMedia()让用户选择屏幕来源以开始录制。但这当前不支持音频,因此我正在使用navigator.mediaDevices.getUserMedia({ audio: true });获取音频流,然后最终将视频轨道添加到其中,然后将此流传递给mediarecorder。

我的是一个视频会议Web应用程序,我设法捕获了所有音频,但是当其他任何用户加入会议室时,我都不会在录音中得到他/她的音频。

有人遇到过类似的问题吗?

javascript webrtc mediarecorder getusermedia get-display-media
1个回答
0
投票

getUserMedia为您提供麦克风

navigator.mediaDevices.getUserMedia({audio: true})给您用户的麦克风,而不是他们系统的音频。

他们的麦克风可能拾取一些系统音频,但不能保证。例如,如果:

  1. 他们的音量调低了
  2. 他们正在使用头戴式耳机

在所有浏览器中,默认情况下,您未听到其他与会者的特定原因是echoCancellation

没有回音消除,当您的麦克风拾起远程扬声器时,他们的声音会立即发送回给他们,他们会听到回音。如果他们的麦克风也不能消除该回声,则您会得到一个回声更大的循环。

如果您知道自己在做什么,可以通过以下方式关闭echoCancellation:

await navigator.mediaDevices.getUserMedia({audio: {echoCancellation: false}});

或之后的事实:

await stream.getAudioTracks()[0].applyConstraints({echoCancellation: false});

改为使用网络音频

如果这是您自己的网络会议应用程序,那么您应该已经拥有所有必要的音轨。您应该至少可以将活动扬声器至少直接馈送到MediaRecorder,或者甚至可以使用网络音频混合音频。

屏幕共享音频即将到来

来自屏幕共享的音频为in the spec,但它是可选的,既可以实施,也可以由最终用户自行决定。

到目前为止,我相信Chrome正在努力实施它。

© www.soinside.com 2019 - 2024. All rights reserved.