【问题标题】:How to convert ArrayBuffer to AudioBuffer?如何将 ArrayBuffer 转换为 AudioBuffer?
【发布时间】:2018-11-03 20:43:51
【问题描述】:

我正在流式传输 arrayBuffer 以转换为 audioBuffer 以便能够收听它。

我正在通过 websocket 事件接​​收流

retrieveAudioStream(){
  this.socket.on('stream', (buffer) => {
    console.log('buffer', buffer)
  })
}

buffer 是一个 arrayBuffer,我需要它是一个 audioBuffer 以便能够在我的应用程序上收听它。

我该怎么做?

【问题讨论】:

标签: javascript buffer web-audio-api audiobuffer


【解决方案1】:

您可以使用BaseAudioContext.createBuffer() 方法。 它用于

创建一个新的空AudioBuffer 对象,然后可以用数据填充该对象,并通过AudioBufferSourceNode 播放

查看 MDN 了解更多信息:https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/createBuffer

【讨论】:

  • AudioBuffer 对象需要 Float32Arrays,这不是 OP 所拥有的(ArrayBuffers 代表数据块)。有没有办法将ArrayBuffers的数据块转换成AudioBuffers?
  • 我相信你可以从ArrayBuffer 创建任何类型的数组。所以你必须能够将ArrayBuffer 转换成Float32Array
【解决方案2】:

由于您是流媒体而不是下载文件然后解码音频数据,AudioContext.createMediaStreamSource() 将更适合您的用例。

在此处阅读更多信息https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaStreamSource

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-22
    • 2017-02-28
    • 2017-09-28
    • 2017-09-16
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多