如何通过 HTML5 音频元素 live-stream 原始 PCM

How to live-stream raw PCM through HTML5 audio element

我有一个 .NET Web 应用程序,我的 C# 控制器 real-time 中的另一个应用程序接收音频 原始 PCM 字节 的形式。我想通过 HTML5 audio element 流式传输此音频 real-time。将 wav header 添加到原始 PCM 字节没有问题,并通过音频元素将数据流式传输为 audio/wav.

问题与 中类似,是 缓冲量往往太多 应该是 "real-time"流媒体。直到读取了大约 25 秒的数据(大约需要 5-6 秒)后,音频才会开始播放。

我研究过使用 MSE (Media Source Extensions) to be able to manually handle the buffering amount. But it does not seem to support wav format currently (source)。

通过在 C# 中编码数据 real-time 将数据更改为更受支持的格式,如 mp3 有其自身的注意事项(即 padding 0-bytes),因此我想 尽可能避免这种情况.

在 MSE 添加对 pcm/wav 的支持之前,是否有解决此问题的可行方法

您可以使用网络音频 API 中的 ScriptProcessorNode 以非常低的延迟播放任意 PCM 样本。然后,您可以根据需要管理缓冲。

只需将样本转换为 ±1.0 的 32 位浮点数。