我们构建了一个互联网广播流媒体,利用冰播服务器通过html5音频标签将MP3流式传输到Firefox。但是,有时流媒体会因任何原因(断开连接等)而停止,当您重新启动流媒体时,它会从会话开始流式传输,这让我们相信它播放浏览器缓存中的内容。
让流媒体播放实际直播的唯一方法是删除 Firefox 中的历史记录。这在其他浏览器中不会发生。如果使用 Flash 回退而不是 html5 音频标签,也会发生这种情况。
考虑使用以下脚本,但认为它不适用于此方案。
<meta http-equiv="Cache-control" content="no-cache" />
任何见解都会有所帮助。谢谢。
注意:请参阅@MosheL的现代解决方案答案。
旧答案(可能仍然需要 SHOUTcast):
我发现使用 SHOUTcast/Icecast 流,保证您不会从缓存播放的唯一方法是使用添加缓存破坏 URL 参数的旧方法。
如果您的原始流网址是:
http://1.2.3.4/someMountPoint
然后在播放时使用 JavaScript 生成如下所示的 URL:
http://1.2.3.4/someMountPoint?nocache=123456789
这确保了缓存不会发生,对于浏览器来说,它们是不同的资源。
icecast.xml
<http-headers>
<header name="Cache-control" value="no-cache" />
</http-headers>
更新(3/2020):在Chrome上,我们需要解决缓冲实时流的另一个问题:
<audio controls preload="false" autoplay="false" .....