首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生成PCM时播放PCM

在生成PCM时播放PCM
EN

Stack Overflow用户
提问于 2017-09-18 16:45:39
回答 1查看 262关注 0票数 0

我正在用javascript生成一些原始的音频数据,我需要在生成它的时候播放它。我在这里搜索了一下,最接近我要找的是this。然而,在这里给出的答案中,首先生成数据点数组,然后播放音频。我需要在生成的同时播放它。基本上,我正在接收一些其他数据流,处理它,并在此基础上生成音频。当我正在接收数据时,我需要播放与正在接收的数据相对应的音频。(一个简单的例子是接收音频音量和频率。)

EN

回答 1

Stack Overflow用户

发布于 2017-09-18 17:02:49

如果我的请求是正确的,那么您所需要的就是一个ScriptProcessorNode

您将通过以下方式向其提供PCM数据:

  • 等待其onaudioprocess事件。通过每个通道的AudioBuffer.
  • loop从事件中获取数据(将通过outputBuffer的通道数据的所有样本返回一个Float32Array).
  • loop。
  • set outputBuffer outputBuffer

代码语言:javascript
复制
function makeSomeNoise() {
  var ctx = new AudioContext();
  var processor = ctx.createScriptProcessor(4096, 1, 1);
  processor.onaudioprocess = function(evt) {
    var outputBuffer = evt.outputBuffer;
    // Loop through the output channels
    for (var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
      var outputData = outputBuffer.getChannelData(channel);
      // Loop through the 4096 samples
      for (var sample = 0; sample < outputBuffer.length; sample++) {
        outputData[sample] = ((Math.random() * 2) - 1) * 0.5;
      }
    }
  };
  processor.connect(ctx.destination);
}

btn.onclick = function() {
  if (confirm("That won't be really nice"))
    makeSomeNoise();
}
代码语言:javascript
复制
<button id="btn">make some noise</button>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46275071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档