【问题标题】:Understanding AudioBuffer to ArrayBuffer conversion了解 AudioBuffer 到 ArrayBuffer 的转换
【发布时间】:2017-02-28 08:35:05
【问题描述】:

我有一个 AudioBuffer 客户端,我想通过 AJAX 连接到快速服务器。

This link 展示了 XMLHttpRequest 如何发送/接收二进制数据 - ArrayBuffer。

ArrayBuffer 与 AudioBuffer 不同(或者我相信),因为我首先解码了 ArrayBuffer 以制作 AudioBuffer。这是使用 decodeAudioData() 作为 Web Audio API 的一部分完成的。

所以我的问题是,我可以将 AudioBuffer 转换回 ArrayBuffer 吗?

如果可能,我想将 ArrayBuffer 发送到我的 express 服务器,然后将其转发到 S3 存储桶,如 this example 所示。

在该示例中,代码将缓冲区放入通过 fs.readFileSync() 创建的 S3 存储桶中。我认为 Buffer 和 ArrayBuffer 之间的区别不会是 S3 的问题:S

【问题讨论】:

    标签: javascript node.js amazon-web-services express web-audio-api


    【解决方案1】:

    使用copyFromChannel 方法,然后将Float32Array 转换为ArrayBuffer

    var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);  
    var anotherArray = new Float32Array();
    myArrayBuffer.copyFromChannel(anotherArray,1,0);
    

    【讨论】:

    • 感谢您的回答。一件事,我认为在示例代码中,copyFromChannel 将创建一个只有单声道输出而不是 2 通道立体声 ArrayBuffer 的 ArrayBuffer 是否正确?
    • 没错。您必须从两个渠道中检索数据并了解如何“合并”这些数据。
    • 我刚刚发现了一些关于 createChannelMerger 的信息,希望对您有所帮助:developer.mozilla.org/en/docs/Web/API/AudioContext/…
    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2020-09-22
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2019-02-18
    相关资源
    最近更新 更多