【问题标题】:Firefox Streaming from Cache Instead of Live StreamFirefox 从缓存流而不是实时流
【发布时间】:2012-11-09 03:34:44
【问题描述】:

我们构建了一个互联网广播流媒体,利用一个 icecast 服务器通过 html5 音频标签将 MP3 流式传输到 Firefox。但是,有时流媒体会因任何原因(断开连接等)而停止,当您重新启动流媒体时,它会从会话开始开始流式传输,这使我们相信它正在播放浏览器缓存中的内容。

让流媒体播放实际直播的唯一方法是删除 Firefox 中的历史记录。这在其他浏览器中不会发生。如果使用 flash 后备而不是 html5 音频标签,也会发生这种情况。

考虑过使用以下脚本,但认为它不适用于这种情况。

<meta http-equiv="Cache-control" content="no-cache" />

任何见解都会有所帮助。谢谢。

【问题讨论】:

    标签: html firefox stream icecast internet-radio


    【解决方案1】:

    注意:请参阅 @MosheL's answer 了解现代解决方案。

    旧答案(SHOUTcast 可能仍然需要):

    我发现对于 SHOUTcast/Icecast 流,保证您不会从缓存播放的唯一方法是使用添加缓存破坏 URL 参数的旧方法。

    如果您的原始流 URL 是这样的:

    http://1.2.3.4/someMountPoint
    

    然后在播放的时候用JavaScript生成一个这样的URL:

    http://1.2.3.4/someMountPoint?nocache=123456789
    

    这确保不会发生缓存,对于浏览器来说,它们是不同的资源。

    【讨论】:

    • 尝试了您的解决方案,但问题仍然存在。也许脚本不正确?谢谢else if ( navigator.userAgent.match( /Firefox/ ) ) { var suppliedFormats = "mp3"; var mediaSet = { mp3:"http://96.31.83.87:8034/stream?nocache=123456789" } }
    • 不,数字(123456789)必须是随机数。如果那是您的代码...您没有添加随机数。我不是字面意思123456789。每次连接到流时生成一个随机数。
    【解决方案2】:

    icecast.xml

     <http-headers>
        <header name="Cache-control" value="no-cache" />
    </http-headers>
    

    更新(2020 年 3 月):在 Chrome 上,我们需要解决一个缓冲直播流的问题:

    <audio controls preload="false" autoplay="false" .....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多