HLS On Shaka 播放器迁移

概览

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

未来,Cast SDK 和 Shaka Player 工程团队将共同努力,以增强对在 Shaka Player 上播放 HLS 内容的支持。MPL 将不再接收关键更新。建议您选择为应用的 HLS 内容播放使用 Shaka Player。

Shaka Player 的优势

在更改播放器时,应用可以享受以下优势:

  • 为用户提供更可靠的流式传输会话,并改进加载时间失败和延迟问题。
  • 继续采用最新的 HLS 功能。
  • 由于 Shaka Player 具有开源性质,因此提高了玩家内容兼容性问题的根本原因分析的清晰度
  • 开源播放器代码库允许合作伙伴为 Shaka Player 项目贡献代码。
  • 由于 Shaka Player 的发布节奏频繁且独立于 Web Receiver SDK 的发布,因此功能和 bug 修复从开发到投入生产的时间大幅缩短
  • shakaVersion API 提供的对播放环境的更精细控制
  • Google 加大了对播放的支持力度,工程资源专注于 Shaka Player 上的 HLS 播放,如路线图所示。

时间轴

Web 接收器 SDK 将改用 Shaka Player 作为 HLS 内容播放的默认播放器。我们将分阶段进行,以引导合作伙伴完成迁移流程。

阶段 开始日期 概览
1 2022 年 10 月 Cast Web 接收器 SDK 引入了用于选择启用在 Shaka Player 上播放 HLS 内容的 API。
2 2025 年 11 月 Cast Web Receiver SDK 将默认播放器更改为 Shaka Player,用于播放 HLS 内容。

Web Receiver SDK 工程团队正在采取以性能为导向的方法,只有当 Shaka Player 的性能达到 MPL 的基准性能时,才会进入下一阶段。这些变更将在 cast-sdk-announcements Google 群组中公布,并在此指南中更新。

选择启用

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

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

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

context.start(castReceiverOptions);

验证内容

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

  • 视频流类型:LIVE 或 VOD
  • 容器格式:TS、MP4 或基本流
  • 内容存在中断或包含嵌入式广告
  • 在以下类型的设备上播放:智能显示屏、Google Cast 电视棒、Android TV 设备、支持 Google Cast 的电视、智能音箱

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

选择停用

根据时间表,Web Receiver SDK 将过渡到针对 Shaka Player HLS 内容播放的选择停用模型。属性 useShakaForHls 的默认值将从 false 更改为 true。届时,应用可以通过手动将此属性设置为 false 来选择使用 MPL 进行 HLS 播放。当 CastReceiverContext 启动时,Web Receiver 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.15 分支上,请尝试将其设置为另一个分支中的最新版本。查看 Shaka Player 版本说明,找到包含最相关更新的版本。请注意,shakaVersion API 具有最低和最高支持版本,如参考文档中所述。如果您发现存在回归问题,请在 Shaka Player 问题跟踪器中报告该问题。
  2. 尝试更改播放器配置参数。Shaka Player 可通过 PlayerConfiguration 对象进行配置。Web Receiver SDK 定义了一组默认值,并允许应用通过 PlaybackConfig 对象中的 shakaConfig 属性修改此配置。此值在创建播放器实例的加载时进行评估。如需了解详情,请参阅应用配置和选项。Web 接收器 SDK 设置的默认值是建议的值。
  3. 查看该问题是否已在 Shaka Player 问题跟踪器Cast 问题跟踪器中报告。如果该 bug 描述也符合您的问题,请对该 bug 发表评论并添加任何相关信息。
  4. Shaka Player 演示网站上测试您的内容。如果您发现该问题在内容演示网站中重现,请向 Shaka Player 项目提交 bug
  5. 如果您在 Cast 端点上遇到 Shaka Player 特有的问题,请在 Cast 问题跟踪器中提交 bug

常见问题解答

更换球员可能会引发许多疑问。以下是常见问题的解答,可帮助您顺利完成迁移流程。

我是否应迁移到 Shaka Player?

我们建议使用 HLS 内容的合作伙伴尽快开始迁移流程。这样一来,您的应用将为用户提供更强大的流式传输体验。本指南的 Shaka Player 优势部分概述了更多优势。合作伙伴应使用 Shaka Player 验证其应用是否正常运行,以确保顺利过渡。如果合作伙伴未提前验证其内容是否能在 Shaka Player 上正常播放,那么当 Web Receiver SDK 过渡到选择停用模型时,部分应用可能会面临风险。

更换球员时,预计需要付出多少精力?

合作伙伴需要在测试环境中测试其应用和内容,以确保与 HLS 相比,用户体验相似或有所提升。为此,合作伙伴需要在内部环境中选择启用此功能,并彻底测试其内容是否能够使用 Shaka Player 播放。如需详细了解应重点关注哪些内容方面,请参阅验证内容。验证完成后,合作伙伴需要在其生产应用环境中添加选择启用标志,才能开始享受 Shaka Player 提供的优势。从宏观层面来看,合作伙伴只需进行极少的软件开发更改,并满足一些 QA 要求,即可成功迁移。

我的应用很快将使用 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 进行播放来解决。如果问题仍然存在,则应针对 Shaka Player 上遇到的相关问题提交 bug。合作伙伴应停止使用 MPL。

我的内容使用 Smooth Streaming 协议,这会对我的应用产生什么影响?

MPL 二进制文件仍将托管并可供接收器应用访问。不过,由于 Smooth Streaming 规范已超过四年未更新,因此我们将不再支持任何与 Smooth Streaming 相关的功能请求和 bug 修复。我们建议您迁移内容,以使用 DASH 或 HLS 流式传输协议,从而继续接收内容的效果更新和支持。

我的内容未使用 HLS 或 Smooth Stream 协议,这会对我的应用产生什么影响?

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