as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持
跳转到主要内容
诸如Shaka播放器和Bitmovin之类的媒体源扩展 (MSE) 播放器在JavaScript中执行CPU密集型任务,例如解析多个Dash媒体清单,这可能会影响用户界面的响应能力和应用的流畅度。在播放直播TV时,如果清单文件较大且DVR窗口也很大,那么这种影响将非常明显。本文档介绍如何利用XML解析器的原生实现来优化性能。

实现XML解析

您可以使用以下函数将XML解析工作卸载到原生解析器。

registerNativePlayerUtils()

要使用原生解析,应用必须注册原生函数。registerNativePlayerUtils() 函数注册应用并允许其调用原生XML解析器。如果当前平台支持原生解析,则该函数返回true,否则返回false。

boolean isNativeXmlParserSupported(playerName: string, playerVersion: string)

playerName: 指定播放器的名称。支持的值为“shaka”。playerVersion: 播放器的版本。对于Shaka播放器,支持的版本为4.6.18或4.3.6。 应用必须检查特定播放器和播放器版本是否提供对XML解析的原生支持。

nativeParseFromString (manifest, expectedRoot)

必须为shakaPlayer传递以下参数: manifest:包含已下载清单的ArrayBuffer。expectedRoot: 已解析XML的预期根元素。 global.nativeParseFromString() 函数为XML解析提供原生实现,播放器在注册后调用它。
必须将该函数设置为原生函数。

unloadNativeXmlParser()

此unloadNativeXmlParser() 函数会卸载原生解析器缓存。请在应用使用完播放器后调用它。通常,您会在播放器的unload() 函数中调用这个函数。

集成变更

Shaka播放器

Shaka播放器的4.6.18和4.3.6版本支持原生XML解析器。有关在应用中使用Shaka播放器并应用所有必需补丁的信息,请参阅使用Shaka播放器播放自适应内容 (HLS/DASH)。 要成功集成XML解析器,请执行以下操作:
  • 确保Shaka播放器构建版本中有Shaka-Player-changes-for-Dash-nativization.patch,其让挂钩能够注册XML解析函数。
  • 作为原生化版本发布的一部分,我们还添加了一个polyfill:DOMParserPolyfill。确保选择DOMParserPolyfill.ts作为应用polyfill的组成部分。
  • 确保选择MiscPolyfill.ts文件的最新版本作为应用polyfill的组成部分。此polyfill进行了更新,以消除对基本DomParser对象的依赖。
这些更改添加到了从以下版本开始的Shaka播放器:
  • ShakaPlayer v4.6.18:shaka-rel-v4.6.18-r2.11.tar.gz
  • ShakaPlayer v4.3.6:shaka-rel-v4.3.6-r2.4.tar.gz
需要在应用的src/shakaplayer/ShakaPlayer.ts中进行的更改:
  1. 如果尚未定义,请在src/shakaplayer/ShakaPlayer.ts中定义Shaka播放器的名称和版本:
  2. 或者,您可以定义一个标记来启用和禁用原生XML解析。例如,在步骤5中使用了以下标记来启用原生解析。
  3. 导入并安装DOMParserPolyfill。
  4. 调用nativeParseFromString()。
  5. 在您的ShakaPlayer.ts文件中添加一个load() 函数,以验证所需的功能是否可用于原生XML解析。完成功能验证后,它会调用setNativeFunctions(),从而通过调用nativeParseFromString() 将实现从Shaka播放器传递给原生XML解析器。setNativeFunctions() 接受一个函数作为参数,Shaka播放器会在XML解析期间调用该函数。
  6. 在ShakaPlayer.ts文件中添加一个unload() 函数来检查是否启用了原生XML解析。如果是,请调用unloadNativeXmlParser来卸载解析器。
外部发布版压缩包中的ShakaPlayer.ts源文件提供了这些更改,可作为参考。
最后修改于 2026年10月26日