4

假设我喜欢在 Javascript 中创建自己的渐进式流媒体机制,因为我发现浏览器的内置流媒体机制不够容错,或者我喜欢通过 WebSocket 实现我自己的自定义方法。我想创建一个缓冲区来保存已下载的连续媒体文件段(比如数组缓冲区或类似的东西)。即使尚未从头到尾下载,是否可以播放此文件?

我唯一的想法是Web Audio API,它有一个 noteOn() 函数,用于精确计时每个片段的开始。但是我不知道这将是多么无懈可击。它还引入了一个问题,即我必须确切知道可以在服务器端安全地剪切音频文件的位置,以便可以在没有任何丢失和间隙的情况下解码下一部分。例如,即使在 CBR 模式下,mp3 的位存储库也将音频数据存储在相邻的音频帧中,这使事情变得困难。

4

1 回答 1

3

创建一个从传入缓冲区提供数据的ScriptProcessorNode怎么样?最大的问题是确保这些片段可转换为原始音频样本,否则您可以在onaudioprocess 事件处理程序中编写一个简单的函数,该函数会拉入下一个可用缓冲区块并将其复制到节点的输出缓冲区中。由于这将是一种按需拉取机制,因此您无需担心时间段回放。

于 2013-05-08T22:48:16.550 回答