假设我喜欢在 Javascript 中创建自己的渐进式流媒体机制,因为我发现浏览器的内置流媒体机制不够容错,或者我喜欢通过 WebSocket 实现我自己的自定义方法。我想创建一个缓冲区来保存已下载的连续媒体文件段(比如数组缓冲区或类似的东西)。即使尚未从头到尾下载,是否可以播放此文件?
我唯一的想法是Web Audio API,它有一个 noteOn() 函数,用于精确计时每个片段的开始。但是我不知道这将是多么无懈可击。它还引入了一个问题,即我必须确切知道可以在服务器端安全地剪切音频文件的位置,以便可以在没有任何丢失和间隙的情况下解码下一部分。例如,即使在 CBR 模式下,mp3 的位存储库也将音频数据存储在相邻的音频帧中,这使事情变得困难。