Asp.net 使用web音频api在客户端网站上播放ByTestStream

Asp.net 使用web音频api在客户端网站上播放ByTestStream,asp.net,web-audio-api,Asp.net,Web Audio Api,我正在通过websockets发送立体声音频文件WAV,并希望通过Web音频Api播放它。服务器站点技术是asp.net。 目前我有: ws.onmessage = function(evt) { var d2 = new DataView(evt.data); var data = new Float32Array(d2.byteLength / Float32Array.BYTES_PER_ELEMENT); for (var jj =

我正在通过websockets发送立体声音频文件WAV,并希望通过Web音频Api播放它。服务器站点技术是asp.net。 目前我有:

 ws.onmessage = function(evt) {

        var d2 = new DataView(evt.data);

        var data = new Float32Array(d2.byteLength / Float32Array.BYTES_PER_ELEMENT);
        for (var jj = 0; jj < data.length; ++jj) {
            data[jj] = d2.getFloat32(jj * Float32Array.BYTES_PER_ELEMENT, true);
        }


        var buffer = context.createBuffer(1, data.length, 44100);
        buffer.getChannelData(0).set(data);

        source = context.createBufferSource();
        source.buffer = buffer;
        source.start(startTime);
        source.connect(context.destination);

        startTime += buffer.duration;

    }
有了这个,我可以听到这首歌,但是声音很大。。。我相信这可能是因为它是一个立体声文件,我只使用一个通道? 如果是,如何使用两个频道?我尝试了一些事情,但结果总是一样或更糟

我在理解它为什么使用Float32Array时还有另一个问题?在我的第一种方法中,我使用了Uint8Array,因为我要向客户端发送字节,所以我想我需要Uint8Array来获得我发送的相同值。但使用UINT8阵列,我只听到噪音,根本听不到歌声

提前谢谢你的帮助

致以最良好的祝愿,
它使用Float32Array,因为Web音频API使用它来处理AudioBuffer实例。你能告诉我更多关于你发送给客户的数据吗?它们实际上是带有RIFF头的.wav缓冲区,还是仅仅是LPCM数据?另外:Web音频API希望浮点数的标称范围为+1到-1。因此,根据您发送的内容,您可能需要做一些数学运算,将您的值压缩到该范围。啊,非常感谢!我不完全理解为什么float32是必需的,它需要介于-1和1之间的值。现在它工作得很好。它现在工作得很好,但我注意到,在音频传输时,有一些点击。这可能是因为音频缓冲区相互连接,并且在每个重叠处都有一个咔嗒声吗?它们是你计时的方式,我觉得没问题。我认为不应该有任何真正的重叠或差距。可能是缓冲区里的东西。也许作为一种测试,试着将它们全部存储在一个大阵列中,然后循环并从中创建一个音频缓冲区。然后看看是否有点击或弹出。如果是这样,你的问题可能在于缓冲区或你的数学,但不是你计时的方式。