HTTP服务器的本地磁盘上有一个长达一小时的 .mp3 文件 . 大约10个Web客户端(使用最新版本的Chrome或Firefox,安装了最新版本的Flash)开始下载该文件 . 网页上的JavaScript或Flash ActionScript会导致 .mp3 文件中的音频在Web客户端计算机的扬声器上播放 . 在文件下载完成之前开始播放音频,并且文件不会保存到Web客户端上的磁盘(因此这是流式传输) .

无论何时开始下载,每个Web客户端用户必须几乎同时听到相同的音频 . (当然,他会错过音频的早期部分 . )最大允许时间差是30毫秒,即如果用户A听到文件中的特定音频片段,那么用户B也应该听到它不超过30毫秒 . 没有必要具有低延迟,例如在客户端缓冲音频最多5秒(最好只需2秒)是可以的,但扬声器上的实际播放应该以同步的方式进行 .

假设客户端和服务器上的时钟在播放期间以相同的速度运行,但它们可以设置为非常不同的时间 . ServerDate JavaScript库(https://github.com/NodeGuy/ServerDate)或类似的东西可用于使客户端JavaScript代码高精度地了解服务器时间 .

可以使用任何设置(例如低,恒定比特率)对 .mp3 进行预编码 . 将它转换为Web客户端支持的另一种有损压缩格式也可以 .

我的问题是:如何实施这样的系统?可以使用哪些现有技术(例如WebRTC,JW Player,其他网络播放器)?什么是相关的开源和自由软件技术? HTML5 JavaScript可以提供比基于Flash的播放器更好的同步精度(或者这个问题)?是否已有可用的实施?

我发现了一个类似的问题:mp3 website player with synchronized playback (not streaming)我的要求比这更严格:Web客户端之间的时差不应该处理时钟同步 .