【问题标题】:How do I change the default playout device on Mac Native WebRTC?如何更改 Mac Native WebRTC 上的默认播放设备?
【发布时间】:2021-02-24 21:48:38
【问题描述】:

我正在使用 WebRTC(本机 Mac 和本机 Windows -- 不是 JS)并尝试更改默认播放和录制设备,但遇到了很多麻烦。这开始让我发疯了,因为它应该非常简单。

问题:在 Mac 和 Windows 上进行通话时,本机更改音频播放和录音设备的推荐方法是什么?

这是我尝试过的:

方法一

Mac

我注意到音频设备模块会监听 Co​​re Audio API 通知并正确调整播放和录音设备。这可行,但我不确定这是否是更换设备的推荐方法。

窗口

我找不到设置默认音频播放/录音设备的系统范围的方法。我可以告诉MIGHT工作的唯一方法是获取对音频设备模块的引用并手动调用SetPlayoutDevice / SetRecordingDevice...这导致下面的方法2:

方法二

Mac

如果可能,我宁愿使用SetPlayoutDevice (link) / SetRecordingDevice (link) 来更改音频输入/输出(这样 Mac 和 Windows 的工作方式相同)。

测试真实音频 IO 设备的unit tests 表明我们应该能够在调用SetPlayoutDevice 后调用StartPlayoutStopPlayout——但这会使我的应用程序冻结。我在没有调用StopPlayoutStartPlayout 的情况下尝试了它,但它似乎没有做任何事情。这是有道理的,因为看起来只修改了内部状态,但没有修改任何内容。

问:如何更改 Mac 上的默认音频播放设备和录音设备?

窗口

我还没有机会在 Windows 上试用此功能,但 Mac 无法正常工作让我觉得这里缺少一些东西。

【问题讨论】:

    标签: windows macos webrtc


    【解决方案1】:

    我自己回答这个问题。

    VoEHardwareImpl (https://chromium.googlesource.com/external/webrtc/stable/webrtc/+/refs/heads/master/voice_engine/voe_hardware_impl.cc) 似乎有一些相关代码。

    播出:

    • 停止播放
    • ...设置设备索引...
    • StereoPlayoutIsAvailable
    • 设置立体声播放
    • 初始化播放
    • 开始播放

    录制:

    • 停止录制
    • ...设置设备索引...
    • StereoRecordingIsAvailable
    • 设置立体声录音
    • 初始化记录
    • 开始录制

    根据您正在进行的提交,您可能需要确保不会陷入僵局。其中一些方法获取锁,因此如果您正在调用需要锁的方法,请确保尚未获取锁。更好的是——在上面执行此操作,或者尽可能包装 adm。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2011-08-06
      • 1970-01-01
      相关资源
      最近更新 更多