【问题标题】:Setup HLS caching policy设置 HLS 缓存策略
【发布时间】:2022-02-23 20:57:14
【问题描述】:

一旦EXT-X-ALLOW-CACHE 被弃用并从协议specification 中删除,是否有其他方法可以为流设置缓存策略? (我的目标是在客户端启用缓存)

我还想在使用mediastreamvalidator 验证流时消除错误:

MUST fix issues
--------------------------------------------------------------
Error: #EXT-X-ALLOW-CACHE has been deprecated
--> Detail:  Line: #EXT-X-ALLOW-CACHE:NO

【问题讨论】:

    标签: ios http-live-streaming


    【解决方案1】:

    您可以在 iOS 10+ 上使用AVFoundation

    播放离线 HLS 内容

    从 iOS 10 开始,您可以使用 AVFoundation 将 HTTP Live Streaming 资产下载到 iOS 设备。这项新功能允许用户在访问快速、可靠的网络时在其设备上下载和存储 HLS 电影,以后无需网络连接即可观看。引入此功能后,HLS 变得更加通用,可最大限度地减少不一致的网络可用性对用户体验的影响

    来源:Working with HTTP Live Streaming

    【讨论】:

    • 不完全是需要的。通过您提出的方法,资产只有在完全下载后才可用。这与缓存不同。我需要缓存播放期间下载的片段+转发缓冲区,而不是更多。
    • @ilya 我认为他们删除它的原因是因为您可以设置 HTTP 缓存标头。在任何情况下,最终决定是否缓存以及缓存什么都是客户端,服务器无法强制。
    • @ilya 引用链接页面:“当用户同时下载和播放资产时,视频的某些部分可能会以低于下载任务配置中指定的质量播放. 如果网络带宽限制阻止以请求下载的质量进行流式传输...(稍后)..尽可能重复使用与配置下载任务相同的资产实例进行播放。”所以两者兼而有之似乎是可能的。
    【解决方案2】:

    老问题,但也许会对某人有所帮助:

    似乎对 HLS 缓存有效的唯一方法是在您的应用程序中运行您自己的缓存反向代理。疯狂,但它确实运作良好。

    devxoul 中提到的 this comment 中提到的这个代理 HLSCachingReverseProxyServer 是一个很好的选择,也是优化缓存以满足您的需求的起点。

    我们需要这样做以使 Apple 的组件尊重像 eTag 一样基本的东西,这是荒谬的。

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 1970-01-01
      • 2010-10-06
      • 2021-05-05
      • 1970-01-01
      • 2012-09-05
      • 2020-08-03
      • 2011-11-12
      • 2011-01-18
      相关资源
      最近更新 更多