如何通过HTML5音频元素进行实时PCM原始数据流传输

3

我有一个.NET网络应用程序,在我的C#控制器中以原始PCM字节的形式从另一个应用程序接收实时音频。我想通过HTML5音频元素实时流式传输这个音频。将wav头添加到原始PCM字节并将数据作为audio/wav通过音频元素进行流式传输没有问题。

另一篇文章中所述的情况类似,问题在于要缓冲的数量对于应该是“实时”流式传输来说太多了。音频要等待约25秒的数据被读取才会开始播放(这需要大约5-6秒钟)。

我研究了使用媒体源扩展(MSE)手动处理缓冲量的方法。但目前它似乎不支持wav格式(来源)。

将数据转换为更受支持的格式,如mp3,通过在C#中实时对数据进行编码,存在自己的缺点(即填充0字节),因此如果可能的话,我想避免这种情况

在MSE添加对pcm / wav的支持之前,有可行的解决方法吗?

1个回答

4
你可以使用Web Audio API中的ScriptProcessorNode来以非常低的延迟播放任意PCM样本。然后,您可以按照自己的方式管理缓冲区。只需将您的样本转换为±1.0的32位浮点数即可。

这似乎正是我正在寻找的。谢谢! - Pleebo
1
此外,对于任何感兴趣的人,这篇文章有一个很好的章节更改PCM位深度,介绍了如何将样本转换为32位浮点数,我发现这非常有用。 - Pleebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接