HarmonyOS鸿蒙Next中基于AVPlayer播放DRM节目(ArkTS)文档示例代码错误

HarmonyOS鸿蒙Next中基于AVPlayer播放DRM节目(ArkTS)文档示例代码错误 【问题描述】 :AVPlaver没有releasing状态,但在代码中出现判断if(state==‘releasing’)

【问题现象】: 文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-avplayer-arkts-integration

cke_3306.png


更多关于HarmonyOS鸿蒙Next中基于AVPlayer播放DRM节目(ArkTS)文档示例代码错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。

更多关于HarmonyOS鸿蒙Next中基于AVPlayer播放DRM节目(ArkTS)文档示例代码错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你指出的状态名问题是对的。从 AVPlayer 公开状态看,释放完成状态应按 released 处理;当前 DRM 示例里又判断 state == ‘releasing’ 并在该分支里 await playerHandle.release(),和“释放完成后再销毁 DRM 资源”的流程不一致,也容易让人误以为 AVPlayer 有一个可监听的 releasing 状态。

建议示例把主动调用 playerHandle.release() 的业务入口与 stateChange 监听分开:业务侧调用 release 后,在 stateChange 收到 ‘released’ 时 destroy MediaKeySession/MediaKeySystem;或者直接删掉 ‘releasing’ 分支,避免示例自相矛盾。

是的,

该文档示例代码的主要错误在于:DRM初始化参数中的assetId与许可证服务器实际要求不匹配,或者**AVPlayerkeySystemInfo配置中缺少mimeType字段**,导致播放器无法正确解析DRM信息。此外,部分示例中on('stateChange')回调的state类型在ArkTS中未正确声明为AVPlayerState枚举,可能引起类型错误。

根据HarmonyOS Next的AVPlayer状态机定义,不存在 releasing 状态。文档示例中判断 if (state == 'releasing') 属于错误代码。调用 release() 后,播放器会直接回到 idle 状态,应改为判断 state == 'idle' 或直接执行资源释放后的逻辑。该问题属于文档示例错误,需修正状态检查条件。

回到顶部