【问题标题】:Isolating channels with Web Audio API使用 Web Audio API 隔离通道
【发布时间】:2015-12-24 12:19:20
【问题描述】:

我试图仅在我的环绕声道中播放音频,但似乎每当我连接到特定声道时,它也会播放其他声道

我的设置和 audioContext.destination 配置为 4 个通道

var merger = context.createChannelMerger(4);
audio.connect(merger, 0, 2);
audio.connect(merger, 0, 3);
merger.connect(context.destination);

我的音频是立体声的(但我只关心一个声道)所以我也尝试先将其拆分

var merger = context.createChannelMerger(4),
    splitter = context.createChannelSplitter(2);
audio.connect(splitter);
splitter.connect(merger, 0, 2);
splitter.connect(merger, 0, 3);
merger.connect(context.destination);

奇怪的是,如果我只将它连接到左/右声道,它会按预期播放。

我在 Windows 10 上运行 chrome 45

【问题讨论】:

    标签: javascript web-audio-api


    【解决方案1】:

    您能分享一下您的 AudioContext 设置代码吗?它需要为单个路由进行一些特定的设置。请看下面的例子:

    var context = new AudioContext();
    var maxChannelCount = context.destination.maxChannelCount;
    
    context.destination.channelCount = maxChannelCount;    
    var merger = context.createChannelMerger(maxChannelCount);
    merger.connect(context.destination);
    
    // This will play the sound on 3rd and 4th speakers for 1 second.
    var osc = context.createOscillator();
    osc.connect(merger, 0, 2);
    osc.connect(merger, 0, 3);
    osc.start();
    osc.stop(1.0);
    

    【讨论】:

      【解决方案2】:

      我认为您错误地将拆分器连接到合并。你可能想要 splitter.connect(merger, 0, 2); splitter.connect(merger, 1, 3); 然后立体声源将被拆分并发送到输出的通道 2 和 3。

      【讨论】:

      • 抱歉,我忘了提我的音频文件实际上是单声道的,但它被读取为立体声,所以我实际上并不关心它只有一个通道,如果你的代码是这样的话
      猜你喜欢
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多