3

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

PCM 缓冲区采用以下格式:

  • PCM 诠释 16
  • 小端
  • 两个通道
  • 交错

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

  • PCM 浮点数 32
  • 大端
  • 两个通道(最多)
  • 去交错

该音频来自 iOS 应用程序,因此我可以访问 Swift 和 Objective C(尽管我对 Objective C 不太满意......这使得 Apple 的音频转换器服务几乎无法使用,因为 Swift 真的不喜欢指针)。

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

  • Java(首选)
  • PHP
  • 节点.js
  • Python

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

我目前的计划是使用按位运算对左右声道进行去交错,然后使用Web Audio API将 Int 16 缓冲区转换为 Float 32 缓冲区。这看起来是个好计划吗?

任何帮助表示赞赏,谢谢。

4

1 回答 1

1

我目前的计划是使用按位运算对左右声道进行去交错,然后使用 Web Audio API 将 Int 16 缓冲区转换为 Float 32 缓冲区。这看起来是个好计划吗?

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

于 2015-08-14T17:55:43.383 回答