.connect()
可以使用and.disconnect()
动态更改图形布局,即使音频正在播放或通过流发送(甚至可以通过 WebRTC 流传输)。我在规范中找不到参考,所以我很确定这是理所当然的。
例如,如果您有两个 AudioBufferSourceNodesbufferSource1
和bufferSource2
,以及一个 MediaStreamAudioDestinationNode streamDestination
:
bufferSource1.connect(streamDestination);
//do some other things here, and after some time, switch to bufferSource2:
//(streamDestination doesn't need to be explicitly specified here)
bufferSource1.disconnect(streamDestination);
bufferSource2.connect(streamDestination);
实例在行动。
编辑1:
正确实施:
根据Audio Output API 上的 Editors Draft,计划/将可以为 AudioContext 选择自定义音频输出设备(通过new AudioContext({ sinkId: requestedSinkId });
)。我找不到有关进度的任何信息,甚至找到了提问者显然已经阅读过的相关讨论。根据这个和(许多)其他参考资料,这似乎不是一件容易的事,但它是为 WA V1 计划的。
编辑:
该部分已从 API 草案中删除,但您仍然可以在旧版本中找到它。
当前解决方法:
我玩弄了你的解决方法(使用一个MediaStreamAudioDestinationNode
和Audio
对象),它似乎与没有连接。我修改了我的示例以切换单个缓冲区(类似于您的示例,但使用AudioBufferSourceNode
),并观察到类似的频率下降。但是,当使用GainNode
inbetween 并将其设置gain.value
为0
or时,频率下降消失了(如果您想动态创建和连接 new s 1
,这不是解决方案)。AudioBuffer