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

How to convert PCM audio stream for online play

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

PCM 缓冲区采用以下格式:

为了支持在标准浏览器上播放音频,我需要将音频转换为以下格式:

此音频来自 iOS 应用程序,因此我可以访问 Swift 和 Objective C(尽管我不太喜欢 Objective C...使得 Apple 的 Audio Converter Services 几乎无法使用,因为 Swift 真的不喜欢指针)。

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

如果有人知道用这些语言中的任何一种执行此操作的方法,请告诉我。我已经在这方面工作了足够长的时间,以至于我什至可以理解关于如何做到这一点的非常技术性的描述。

我目前的计划是使用位运算来解交织左右声道,然后将 Int 16 Buffer 转换为 Float 32 Buffer,并使用 Web Audio API。这看起来是个好计划吗?

感谢任何帮助,谢谢。

My current plan is to use bitwise operations to deinterleave the left and right channels, then cast the Int 16 Buffer to a Float 32 Buffer with the Web Audio API. Does this seem like a good plan?

是的,这正是您需要做的。我在我的应用程序中做完全相同的事情,这种方法效果很好,而且确实是唯一有意义的方法。由于带宽量,您不想从服务器向客户端发送 32 位浮点样本。在客户端进行转换。