HLS On Shaka 播放器迁移

概览

Cast Web Receiver SDK 支持使用多种网络流式传输协议播放内容。SDK 会根据所使用的协议加载播放器来处理内容的播放。对于 HLS 内容,系统会加载媒体播放器库 (MPL)。对于 DASH 内容,系统会加载 Shaka Player

今后,Cast SDK 和 Shaka Player 工程团队将整合各项工作,以提高对在 Shaka 播放器上播放 HLS 内容的支持。MPL 将不再接收重要更新。我们建议您选择使用 Shaka Player 播放应用的 HLS 内容。

Shaka 玩家权益

在改变玩家的过程中,应用利用了以下优势:

  • 为用户提供更强大的流式传输会话,缩短了加载时间失败并缩短延迟时间。
  • 持续采用最新的 HLS 功能。
  • 更清晰地分析由于 Shaka Player 的开源性质导致的玩家内容兼容性问题的根本原因分析。
  • 开源玩家代码库可让合作伙伴为 Shaka 播放器项目贡献代码。
  • 功能投入和 bug 修复所需的时间显著缩短,因为 Shaka Player 的发布频率很频繁,并且与 Web 接收器 SDK 的版本无关。
  • 更好地控制播放环境(由 shakaVersion API 提供)。
  • 利用侧重于 Shaka Player 上的 HLS 播放的工程资源,增强了 Google 对播放的支持(如路线图中所示)。

时间表

Web Receiver SDK 将转换为使用 Shaka Player 作为 HLS 内容播放的默认播放器。我们将分阶段进行迁移,以指导合作伙伴完成迁移过程。

阶段 开始日期 概览
1 2022 年 10 月 Cast Web Receiver SDK 引入了一些 API,可供用户选择在 Shaka Player 上播放 HLS 内容。
2 2024 年下半年 Cast Web 接收器 SDK 将默认播放器更改为 Shaka 播放器,以便播放 HLS 内容。

Web Receiver SDK 工程团队正在采取以性能为导向的方法,只有在 Shaka Player 的性能与 MPL 的基准性能不相上下时,才会进入下一阶段。这些更改将在 cast-sdk-announcements google 网上论坛中公布,并在本指南中更新。

选择启用

从 CAF 版本 3.0.0105 开始,提供一项应用级配置,可供用户选择使用 Shaka Player 进行 HLS 播放。此版本还引入了一个 API,可从支持的 Shaka Player 版本范围中选择要加载的 Shaka Player 版本。这些标志通过 useShakaForHlsshakaVersion 属性在 CastReceiverOptions 类中提供,并在 CastReceiverContext 启动时进行评估。任何选择启用 Shaka for HLS 的应用都应将 Shaka 播放器版本设置为至少 4.3.4,以利用最新的 HLS 改进。如需选择启用,请参照以下代码段:

const context = cast.framework.CastReceiverContext.getInstance();

let castReceiverOptions = new cast.framework.CastReceiverOptions();
castReceiverOptions.useShakaForHls = true;

context.start(castReceiverOptions);

验证内容

合作伙伴应先在 Shaka Player 上验证其内容播放,然后再选择在其正式版应用中使用 Shaka Player。我们建议您对下面列出的每个内容变体进行测试:

  • 直播类型:直播或视频点播
  • 容器格式:TS、MP4 或基本流
  • 包含不连续内容或嵌入式广告的内容
  • 在以下类型的设备上播放:智能显示屏、Chromecast 加密狗、Android TV 设备、内置 Chromecast 的电视、智能音箱

如果您发现任何错误或意外行为,请提交 bug。 当您能够确认内容中没有严重的播放失败的情况后,将更改推送到生产环境。

选择停用

Web Receiver SDK 将根据时间轴转换为停用 Shaka Player HLS 内容播放的停用模式。属性 useShakaForHls 会将其默认值从 false 更改为 true。届时,应用可以选择将 MPL 用于 HLS 播放,方法是手动将此属性设置为 falseCastReceiverContext 启动后,Web 接收器 SDK 将还原为加载 MPL 而非 Shaka Player。请参阅以下示例,了解如何选择退出:

const context = cast.framework.CastReceiverContext.getInstance();

let castReceiverOptions = new cast.framework.CastReceiverOptions();
castReceiverOptions.useShakaForHls = false;

context.start(castReceiverOptions);

报告问题

我们建议合作伙伴提交在播放 HLS 内容时发现的任何问题。如前所述,MPL 将不再接收重要更新。如果使用 MPL 时遇到任何问题,请按照指南的选择启用部分中的步骤操作,验证切换到 Shaka Player 是否能够解决您的问题。如果问题仍然存在,或您在切换播放器时遇到其他问题,请按以下步骤操作。

  1. 请尝试将 shakaVersion 设置为其他分支版本,以解决此问题。例如,如果在 4.3 分支上遇到问题,请尝试在 4.2.x3.3.x 版本中将其设置为最新版本。查看 Shaka Player 版本说明,了解相关性最高的版本。请注意,shakaVersion API 具有支持的最低和最高版本,参考文档中对此进行了详细说明。如果您发现存在回归问题,请在 Shaka Player 问题跟踪器中报告问题。
  2. 尝试更改播放器配置参数。Shaka Player 可通过 PlayerConfiguration 对象进行配置。Web 接收器 SDK 定义了一组默认值,并允许应用通过 PlaybackConfig 对象中的 shakaConfig 属性修改此配置。创建玩家实例后,系统会在加载期间对此进行评估。查看此类别的更多结果

    应用配置和选项。Web Receiver SDK 设置的默认值是推荐值。

  3. 查看 Shaka 播放器问题跟踪器Cast 问题跟踪器中是否已报告该问题。评论 bug,如果同时能描述您的问题,请添加任何相关信息。

  4. Shaka Player 演示网站上测试您的内容。如果您发现该问题在您的内容的演示网站中重现,请使用 Shaka Player 项目提交 bug

  5. 如果您遇到投射端点上 Shaka Player 所特有的问题,请在 Cast 问题跟踪器中提交 bug

常见问题解答

更换球员可能会引发很多问题。您可以在下面找到一些最常见问题的解答,从而引导您完成迁移过程。

是否应该迁移到 Shaka Player?

我们建议使用 HLS 内容的合作伙伴尽快开始迁移流程。因此,您的应用将为用户提供更可靠的在线播放体验。本指南的 Shaka 播放器权益部分概述了更多优势。合作伙伴应使用 Shaka Player 验证其应用是否正常运行,以确保顺利过渡。如果合作伙伴未提前验证其内容可以在 Shaka Player 上正常播放,则某些应用可能会在 Web Receiver SDK 转换为选择停用模式时面临风险。

在更换玩家时,您期望投入多少精力?

合作伙伴需要在测试环境中测试其应用和内容,以确保与 HLS 相比,用户体验类似或有所改进。为此,合作伙伴需要在内部环境中选择启用该功能,并全面测试其内容是否能够使用 Shaka Player 播放。如需详细了解需要关注内容的哪些方面,请参阅验证内容。验证后,合作伙伴将需要在其生产应用环境中添加此标志以选择启用,以便开始利用 Shaka Player 提供的优势。概括来讲,只需极少的软件开发更改,且大部分是质量检查要求,我们的合作伙伴才能成功迁移。

我的应用很快就会使用 HLS 流式传输内容,我该怎么做?

新的集成应选择使用 Shaka Player 进行播放。从长远来看,您的应用将会得到更好的支持,并会利用新的 HLS 功能和性能改进。如果新集成遇到问题,请尽快提交 bug,以便为工程团队留出足够的时间来解决问题。如果应用的截止日期很紧,请将相关信息以及相应的影响情况添加到 bug 报告中,以便进行优先级排序。我们的工程团队将努力提供解决方案,为您的用户充分提供支持。

我的内容或应用不支持 Shaka Player,该怎么办?

您应向 Shaka Player 项目或 Cast 项目提交 bug(请参阅报告问题)。Cast SDK 工程团队会积极监控这些跟踪器,并将与您一起解决当前的所有问题。越早检测到这些问题,他们就能越早提供修复方案。

MPL 不再接收关键更新,这具体意味着什么?

过去,MPL 一直采用新的 HLS 功能,并通过重要更新修复了重大 bug。由于 MPL 将不再接收它们,因此系统不会再向播放器添加新的 HLS 功能。同样,MPL 上报告的 HLS 播放问题也无法在 MPL 中修复。这些问题应该可通过切换到 Shaka Player 进行播放来解决。如果问题仍然存在,您应提交 bug,报告 Shaka Player 遇到的相关问题。合作伙伴应停止使用 MPL。

我的内容使用了 Smooth Streaming 协议,这对我的应用有何影响?

MPL 二进制文件仍将托管,并可供您的接收器应用访问。但是,任何与流畅流式传输相关的功能请求和 bug 修复都将不受支持,因为流畅流式传输规范已经四年未更新。我们建议您迁移内容,以使用 DASH 或 HLS 流式传输协议,以继续接收内容的性能更新和支持。

我的内容没有使用 HLS 或平滑流协议,这对我的申请有何影响?

如果您的内容库未使用上述任何流式传输协议,那么您不会受到迁移的影响。您的应用不需要进行任何更改。