Web 如何将PCM音频流转换为在线播放

Web 如何将PCM音频流转换为在线播放,web,audio-streaming,pcm,audio-converter,interleave,Web,Audio Streaming,Pcm,Audio Converter,Interleave,我可以访问PCM音频缓冲区的音频流。我应该清楚我没有访问音频文件的权限。我只能访问4096字节的音频数据流。 PCM缓冲器采用以下格式: PCM Int 16 小恩迪亚 双通道 交错 要在标准浏览器上支持音频播放,我需要将音频转换为以下格式: PCM浮点32 大端 两个通道(最多) 去交错 这个音频来自iOS应用程序,所以我可以访问Swift和Objective C(尽管我对Objective C不太满意……这使得苹果几乎无法使用,因为Swift真的不喜欢指针) 此外,回放将在浏览器上进

我可以访问PCM音频缓冲区的音频流。我应该清楚我没有访问音频文件的权限。我只能访问4096字节的音频数据流。

PCM缓冲器采用以下格式:

  • PCM Int 16
  • 小恩迪亚
  • 双通道
  • 交错
要在标准浏览器上支持音频播放,我需要将音频转换为以下格式:

  • PCM浮点32
  • 大端
  • 两个通道(最多)
  • 去交错
这个音频来自iOS应用程序,所以我可以访问Swift和Objective C(尽管我对Objective C不太满意……这使得苹果几乎无法使用,因为Swift真的不喜欢指针)

此外,回放将在浏览器上进行,因此我可以在客户端Javascript或服务器端处理转换。我精通以下服务器端语言,可以进行转换:

  • Java(首选)
  • PHP
  • Node.js
  • 蟒蛇
如果有人知道用这些语言中的任何一种做这件事的方法,请让我知道。我已经在这方面工作了足够长的时间,我可能会理解如何做到这一点,即使是一个非常技术性的描述

我目前的计划是使用逐位操作将左通道和右通道解交错,然后使用。这看起来是个好计划吗

非常感谢您的帮助,谢谢

我目前的计划是使用逐位操作将左声道和右声道解交错,然后使用Web Audio API将Int 16缓冲区转换为Float 32缓冲区。这看起来是个好计划吗


是的,这正是你需要做的。我在我的应用程序中也做了同样的事情,这种方法很有效,而且是唯一有意义的方法。由于带宽的原因,您不希望从服务器向客户端发送32位浮点采样。在客户端进行转换。

非常感谢。很多事情都失败了,我想确保这种逐位策略没有根本缺陷。如果您不介意后续问题,您发现从手机向客户发送音频数据的最佳方式是什么?这是Chromecast应用程序,因此所有数据必须是文本。现在,我将音频数据作为base64编码字符串发送(据我所知,这是将文本数据发送到浏览器的唯一方法)。我更愿意发送UTF-16字符串,但我担心Javascript无法正确解析该字符串。@WilliamRosenbloom实际上可以通过websocket发送二进制数据。现代JavaScript实现支持类型化数组,因此您可以使用最原始有效的16位样本数组。BinaryJS为您包装了这个。()您可以在客户端和服务器之间打开任意流。我在这方面仍然有一些问题。解码后的音频中有很多噪音。如果你能看看我的名片,我将非常感激。再次感谢你。