概览
Cast Web Receiver SDK 支持使用多种网络在线播放协议播放内容。SDK 会根据所使用的协议加载播放器来处理内容的播放。对于 HLS 内容,系统会加载媒体播放器库 (MPL)。对于 DASH 内容,系统会加载 Shaka Player。
今后,Cast SDK 和 Shaka Player 工程团队将共同努力,增强对 Shaka Player 上 HLS 内容播放的支持。MPL 将不再收到关键更新。我们建议您选择使用 Shaka Player 来播放应用的 HLS 内容。
Shaka Player 优势
在更换播放器时,应用可获享以下优势:
- 为用户提供更稳定的在线播放会话,并缩短了加载时间故障和延迟时间。
- 持续采用最新的 HLS 功能。
- 由于 Shaka Player 的开源特性,对于播放器内容兼容性问题,根本原因分析更加清晰。
- 开源播放器代码库允许合作伙伴向 Shaka Player 项目贡献代码。
- 功能和 bug 修复到生产环境的时间显著缩短,因为 Shaka Player 的发布节奏非常频繁,并且独立于 Web Receiver SDK 的发布。
shakaVersion
API 提供的对播放环境的更大控制。- Google 增加了播放支持,将工程资源集中用于 Shaka Player 上的 HLS 播放,如路线图所示。
时间轴
Web Receiver SDK 将改用 Shaka Player 作为 HLS 内容播放的默认播放器。我们将分阶段完成此操作,以引导合作伙伴完成迁移流程。
阶段 | 开始日期 | 概览 |
---|---|---|
1 | 2022 年 10 月 | Cast Web 接收器 SDK 引入了用于选择启用在 Shaka Player 上播放 HLS 内容的 API。 |
2 | 2025 年上半年 | 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
类中的 useShakaForHls
和 shakaVersion
属性提供,并在 CastReceiverContext
启动时进行评估。任何选择启用 Shaka for HLS 的应用都应将 Shaka Player 版本设置为至少 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
。届时,应用可以通过手动将此属性设置为 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 是否能解决问题。如果问题仍然存在,或者您在切换玩家时遇到其他问题,请按照以下步骤操作。
- 尝试将
shakaVersion
设置为其他分支版本以解决此问题。例如,如果在4.3
分支上遇到此问题,请尝试将其设置为4.2.x
或3.3.x
版本中的最新版本。查看 Shaka Player 版本说明,找到最相关的更新版本。请注意,shakaVersion
API 具有支持的最低版本和最高版本,如参考文档中所详述。如果您发现存在回归问题,请在 Shaka Player 问题跟踪器中报告该问题。 尝试更改播放器配置参数。Shaka Player 可通过
PlayerConfiguration
对象进行配置。Web Receiver SDK 定义了一组默认值,并允许应用通过PlaybackConfig
对象中的shakaConfig
属性修改此配置。系统会在创建播放器实例的加载时间进行评估。查看此类别的更多结果应用配置和选项。Web 接收器 SDK 设置的默认值是建议值。
查看问题是否已在 Shaka Player 问题跟踪器或 Cast 问题跟踪器中报告。对 bug 进行评论,并添加任何相关信息(如果这些信息能描述您的问题)。
在 Shaka Player 演示版网站上测试您的内容。如果您发现问题在内容的演示版网站中重现,请向 Shaka Player 项目提交 bug。
如果您在 Cast 端点上遇到 Shaka Player 独有的问题,请在 Cast 问题跟踪器中提交 bug。
常见问题解答
更换玩家可能会引发很多问题。以下是常见问题解答,可帮助您顺利完成迁移流程。
我是否应迁移到 Shaka Player?
我们建议使用 HLS 内容的合作伙伴尽快开始迁移流程。这样一来,您的应用便可为用户提供更稳定的在线播放体验。如需了解更多优势,请参阅本指南的 Shaka Player 优势部分。合作伙伴应验证其应用是否使用 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。
我的内容使用的是流畅串流协议,这对我的应用有何影响?
MPL 二进制文件仍会托管,并且可供接收器应用访问。不过,由于 Smooth Streaming 规范已超过四年未更新,因此我们不支持任何与流畅串流相关的功能请求和 bug 修复。我们建议您迁移内容以使用 DASH 或 HLS 流式传输协议,以便继续接收内容的效果更新和支持。
我的内容不使用 HLS 或 Smooth Stream 协议,这对我的应用有何影响?
如果您的内容库不使用上述任何流式传输协议,则迁移对您不会产生影响。您的应用无需进行任何更改。