Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何更改Mac Native WebRTC上的默认播放设备?_Windows_Macos_Webrtc - Fatal编程技术网

Windows 如何更改Mac Native WebRTC上的默认播放设备?

Windows 如何更改Mac Native WebRTC上的默认播放设备?,windows,macos,webrtc,Windows,Macos,Webrtc,我正在使用WebRTC(本机Mac和本机Windows,而不是JS),试图更改默认的播放和录制设备,但遇到了很多麻烦。这让我开始发疯,因为它应该非常简单 问题:在Mac和Windows上进行本机通话时,建议用什么方法更改音频播放和录音设备 以下是我尝试过的: 方法1 雨衣 我注意到音频设备模块监听核心音频API通知,并正确调整播放和录制设备。这是可行的,但我不确定这是否是更换设备的推荐方法 窗户 我找不到系统范围内设置默认音频播放/录制设备的方法。我唯一能判断可能工作的方法是获取音频设备模块的参

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

问题:在Mac和Windows上进行本机通话时,建议用什么方法更改音频播放和录音设备

以下是我尝试过的:

方法1 雨衣 我注意到音频设备模块监听核心音频API通知,并正确调整播放和录制设备。这是可行的,但我不确定这是否是更换设备的推荐方法

窗户 我找不到系统范围内设置默认音频播放/录制设备的方法。我唯一能判断可能工作的方法是获取音频设备模块的参考,并手动调用该模块上的
SetPlayoutDevice
/
SetRecordingDevice
,从而得出下面的方法2:

方法2 雨衣 如果可能的话,我宁愿使用
SetPlayoutDevice
()/
SetRecordingDevice
()来更改音频输入/输出(因此Mac和Windows的工作方式相同)

对真实音频IO设备的测试表明,在调用
SetPlayoutDevice
后,我们应该能够调用
StartPlayout
StopPlayout
——但这会使我的应用程序冻结。我在没有调用
StopPlayout
StartPlayout
的情况下尝试了它,但它似乎什么也没做。这是有意义的,因为看起来只有内部状态被修改,而没有任何内容被修改

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

窗户 我还没有机会在Windows上试用,但Mac不工作让我觉得我缺少了一些东西。

自己回答这个问题

VoEHardwareImpl()似乎有一些相关的代码

播放时间:

  • 停止布局
  • …设置设备索引
  • 立体播放可用
  • 设置立体布局
  • 初始播放
  • 起始布局
用于记录:

  • 停止录音
  • …设置设备索引
  • 立体记录可用
  • 设置录像机记录
  • 初始记录
  • StartRecording
根据您的提交情况,您可能需要确保不会陷入死锁状态。其中一些方法获取锁,因此如果调用需要锁的方法,请确保尚未获取锁。更好的方法是,在可能的情况下,将其设置为高于adm的级别或包装adm