【问题标题】:ChannelMergerNode in Web audio API not merging channelsWeb音频API中的ChannelMergerNode不合并频道
【发布时间】:2014-08-19 22:57:41
【问题描述】:

我正在尝试使用网络音频 API 创建一个音频流,其中左右声道由不同的振荡器生成。左声道的输出是正确的,但右声道是0。根据spec,我看不出我做错了什么。

在 Chrome 开发中测试。

代码:

var context = new AudioContext();
var l_osc = context.createOscillator();
l_osc.type = "sine";
l_osc.frequency.value = 100;
var r_osc = context.createOscillator();
r_osc.type = "sawtooth";
r_osc.frequency.value = 100;
// Combine the left and right channels.
var merger = context.createChannelMerger(2);
merger.channelCountMode = "explicit";
merger.channelInterpretation = "discrete";
l_osc.connect(merger, 0, 0);
r_osc.connect(merger, 0, 1);
var dest_stream = context.createMediaStreamDestination();
merger.connect(dest_stream);
// Dump the generated waveform to a MediaStream output.
l_osc.start();
r_osc.start();
var track = dest_stream.stream.getAudioTracks()[0];
var plugin = document.getElementById('plugin');
plugin.postMessage(track);

【问题讨论】:

  • 为此创建了一个 JSFiddle。 jsfiddle.net/notthetup/0x11erbb
  • 似乎与channelCountMode有关。不将其设置为“显式”似乎可以解决它。但我不知道为什么。
  • 删除 channelCountMode 有效。谢谢。
  • 但我不知道为什么会这样。默认的 channelCount 是 2。因此,即使您将其设置为显式,并且不设置 channelCount,它也应该向上合并为立体声。错误?

标签: javascript audio web-audio-api


【解决方案1】:

channelInterpretation 意味着合并节点会将立体声振荡器连接混合到每个通道 - 但是因为您有一个明确的 channelCountMode,它会堆叠每个连接的两个通道以获得四个通道并且(因为它是明确的)只是删除前两个频道。不幸的是,后两个通道是来自第二个输入的两个通道 - 因此它会丢失来自第二个连接的所有通道。

一般来说,您不需要弄乱 channelCount 解释的东西,它会为立体声做正确的事情。

【讨论】:

  • 我不太明白。根据w3.org/TR/webaudio/#OscillatorNode,每个振荡器的输出都是单声道,而不是立体声。所以两个单声道应该堆叠起来,产生立体声输出。当我没有设置 channelInterpretation 时,它会将其中一个振荡器上混到两个输出通道中,因此我在两个输出通道中获得了相同的数据。
  • 问题是节点的默认 channelCount 是 2 - 所以合并器的输入导致从振荡器的单声道输出到立体声的上混,然后有四个输入。尝试将 Merger 上的 channelCount 设置为 1。
  • 我明白了,谢谢。我认为 channelCount 应用于输出,但规范说它是用于输入的。我想我应该更仔细地阅读规范。
  • 不是很清楚。我总是发现连接与渠道模型很难一次留在我的脑海中。不过,我认为默认情况下合并可能应该是 channelcount 1。
  • 实际上,您不应该将 channelcountmode 设置为显式,除非您试图强制输入为单声道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2016-04-26
  • 2014-05-27
  • 2016-07-05
  • 2011-12-12
  • 1970-01-01
  • 2015-02-13
相关资源
最近更新 更多