【问题标题】:Chromecast Receiver CAF, infinite loading of MPEG-DASH stream, ShakaPlayer accessChromecast Receiver CAF,无限加载 MPEG-DASH 流,ShakaPlayer 访问
【发布时间】:2018-06-04 12:40:14
【问题描述】:

Chromecast 播放 MPEG-DASH 直播时遇到问题。由于清单中缺少 UTCTiming 标签,会发生无限加载。众所周知,ShakaPlayer 会出现此问题。这是FAQ中的第一个问题:https://github.com/google/shaka-player/blob/master/docs/tutorials/faq.md

但是,在 chromecast 上,我无法直接访问 ShakaPlayer(或者可能有一种我不熟悉的方式)。我能想到的问题有两种解决方案:

  1. 动态修改清单。
 this.playbackConfig.manifestHandler = (manifest) => {
    //将 UTCTiming 添加到具有如下属性的清单中:
    customUTC.setAttribute("schemeIdUri", "urn:mpeg:dash:utc:http-head:2014");
    customUTC.setAttribute("值", this.manifestUrl); }

但这并没有改变 chromecast 播放器的行为,仍然会出现无限加载,我在这里做错了吗?

  1. 通过设置useLegacyDashSupport 使用旧版播放器(媒体播放器库)可以正常播放chromecast 流,但会稍微破坏UI。我可以仅在需要时动态切换到旧版播放器吗?例如,基于清单,或在来自发件人应用的 loadRequest 期间。

【问题讨论】:

    标签: chromecast google-cast mpeg-dash shaka


    【解决方案1】:

    UTCTiming 元素是必需的,因为 Shaka Player 需要知道服务器上的时间,以便它可以在正确的时间播放。如果客户端和服务器的时钟时间不同,则视频可能无法播放。这不是Shaka Player的要求,而是DASH的一般要求。

    但如果您无法在清单中设置元素,您可以使用manifest.dash.clockSyncUri(请参阅docs)配置参数来设置要使用的时钟同步 URL。例如:

    player.configure({manifest: {dash: {clockSyncUri: 'https://example.com/clock'}}});
    

    请注意,用于时钟同步的 URL 需要在响应中包含正确的 Date 标头(注意缓存),如果请求是跨域的,则需要公开标头,否则将CORS 错误。

    另外,shaka-player#999 是一个帮助漂移的功能请求。在该功能着陆后,播放器将使用清单中的片段来猜测实时边缘,而不是使用时钟时间。这意味着您不必设置时钟同步。

    【讨论】:

      【解决方案2】:

      我同意你的看法。这是 shaka 强制使用 UTCTiming 的非常烦人的行为。

      如果您可以选择在您的 fork 中修改 shaka-player 代码,我建议您在清单初始化 (check here) 后调用 setClockOffset 方法。清单具有具有 setClockOffset 方法的presentationTimeline。否则,您可以从here 访问清单。为 UTCTiming 触发 setClockOffset 方法。如果您无法为清单设置 UTCTiming,手动设置偏移量可能是您的最佳选择。

      示例代码案例是 =>

      player.load(manifestUri)
        .then(() => {
          const manifest = player.getManifest();
          const presentationTimeline = manifest.presentationTimeline;
          presentationTimeline.setClockOffset(10/* find a suitable offset */);
        });
      

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2013-10-12
        • 2014-06-18
        • 2018-06-20
        • 2017-11-19
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        相关资源
        最近更新 更多