实现XML解析
您可以使用以下函数将XML解析工作卸载到原生解析器。registerNativePlayerUtils()
要使用原生解析,应用必须注册原生函数。registerNativePlayerUtils() 函数注册应用并允许其调用原生XML解析器。如果当前平台支持原生解析,则该函数返回true,否则返回false。
boolean isNativeXmlParserSupported(playerName: string, playerVersion: string)
playerName: 指定播放器的名称。支持的值为“shaka”。playerVersion: 播放器的版本。对于Shaka播放器,支持的版本为4.6.18或4.3.6。
应用必须检查特定播放器和播放器版本是否提供对XML解析的原生支持。
ShakaPlayer版本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对象的依赖。
- 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中定义Shaka播放器的名称和版本:
-
或者,您可以定义一个标记来启用和禁用原生XML解析。例如,在步骤5中使用了以下标记来启用原生解析。
-
导入并安装
DOMParserPolyfill。 -
调用
nativeParseFromString()。 -
在您的ShakaPlayer.ts文件中添加一个
load()函数,以验证所需的功能是否可用于原生XML解析。验证所有检查后,它调用setNativeFunctions(),从而通过调用nativeParseFromString()将实现从Shakaplayer传递给原生XML解析器。setNativeFunctions()接受将一个函数作为参数,该函数在XML解析期间由Shakaplayer调用。 -
在ShakaPlayer.ts文件中添加一个
unload()函数来检查是否启用了原生XML解析。如果是,请调用unloadNativeXmlParser来卸载解析器。

