WebRTC Chrome 麦克风无法正常工作

Posted

技术标签:

【中文标题】WebRTC Chrome 麦克风无法正常工作【英文标题】:WebRTC Chrome microphone not working 【发布时间】:2015-11-05 15:26:57 【问题描述】:

说明

规格:Chrome 版本 44、45、46,包括 Win、Mac 和 Linux。

采取的行动:

    第一个来源:通过 getUserMedia 授予的摄像头和麦克风 第二个来源:麦克风仅通过 getUserMedia 授予 两个来源都存储在 JS 对象中 使用 WebAudio 检查音量(在 5 秒内达到峰值)3) WebRTC 调用 在第一个来源中建立

症状:

    音量级别检测为 0 在 WebRTC 通话中,一位用户听不到 Chrome 用户的声音

预期行为:

    检测到音量高于0 在 WebRTC 通话中,两个用户都能听到对方的声音

严重性:经常,但并非总是如此。似乎与特定用户无关,它每天都会发生在任何用户身上。

(!)有时可以通过完全重启 Chrome 来临时修复。

(!)有时可以在 Mac 上临时修复(直到重新启动):

    转到 Mac 应用程序 > 实用程序 > 终端 复制并粘贴此命令,然后按 Enter:sudo killall VDCAssistant 输入您的计算机密码并按 Enter 键 重启 Chrome

(!)即使只请求一个来源也会发生。

帮助

这似乎是很久以前向 Google 提出的一个大问题,但仍未解决。有人遇到过吗?有什么办法可以用 javascript 或其他方式解决这个问题?

编辑 1

它也可以在https://apprtc.appspot.com/ 和任何其他 webrtc 网站上重现。

编辑 2

好像是 WebRTC 的 bug:

https://code.google.com/p/webrtc/issues/detail?id=4799 https://code.google.com/p/webrtc/issues/detail?id=5175

【问题讨论】:

你试过没有webaudio吗?您仍然可以使用音频/视频元素控制播放音量。哪个是默认输入音频设备? 我没有尝试没有 webaudio。很难说哪一个是默认的,因为我无法访问客户的计算机。通常它是“内置”的。我可以控制播放,但我可以像这样控制麦克风输出音量吗? 在 Mac 和 Windows 中,您可以轻松找出哪个是默认设置。如果没有 webaudio,您将无法控制麦克风电平,并且更多的是增益。我个人认为,从用户体验的角度来看,远程各方应该能够自己控制音量。 问题不在于音量,而是一个错误,麦克风无法正常工作 - 它不会通过 webrtc 发送任何声音,也无法通过 webaudio 检测到。你确定你正确理解了这个问题吗? 如果我没记错的话,您正在打开一个 WebRTC 连接并选择了两个源(并且两者都使用相同的音频设备)您没有提到这是由一方完成的还是由两个不同的一方完成的(并且在两台不同的机器上或仅在一台机器上)。但是你说即使只有一个问题也是可以重现的。我从来没有遇到过这个问题,我使用的是不同的音频设备:内置麦克风、外置麦克风、线路输入、声卡线路输入、立体声混音等。你怎么知道音量是 0?您是否使用音频或视频标签并将流附加到它? 【参考方案1】:

这是我在.profile 中的一个脚本,可以解决这个问题:

alias fixcam="sudo kill -9 `pgrep VDCAssistant`; sudo killall coreaudiod"

然后我从终端运行fixcam。如果您将上述命令添加到您的.profile,您将需要打开一个新的终端窗口或运行source ~/.profile 以重新加载配置。

看起来该错误已被隔离到 coreaudiod 处于不良状态。我还没有测试过只重启coreaudiod,但它也可能会起作用。

【讨论】:

vdcassistant 用于“我的相机不再工作”的情况 @PhilippHancke 虽然那是用于相机的,但我也已经修复了麦克风(主要是在 Skype 没有正确释放控制的情况下)

以上是关于WebRTC Chrome 麦克风无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

webrtc麦克风问题

Chrome不允许HTTP托管网站访问相机和麦克风

Flash 电影不要求访问 Google Chrome 中的麦克风的权限

如何在 webrtc 中将麦克风静音/取消静音

如何直接从浏览器录制音频

前端:获取摄像头&麦克风