背景
我正在使用 HTML 视频元素在 Safari 中播放 HLS+Fairplay 流(VOD 和直播)。 我的应用程序类似于 Netflix。您可以观看一个视频,停下来,然后观看另一个视频。 具体来说,
<video>
标签在每次游戏时创建,并在玩家退出时销毁。
问题
有时,退出播放器后,启动新视频会导致
MEDIA_ERR_DECODE
错误,而无需更多解释。
我可以在代码中跟踪 Fairplay 证书和 CKC
已被正确检索,并且媒体会话已创建和更新(使用 CKC
)。
事实上,当我记录所有内容时,我看到的日志与其工作时完全相同。除了最后的MEDIA_ERR_DECODE
错误。
当我收到此错误时,如果我立即重试播放,则会发生相同的错误,但如果我等待大约 5~10 秒,它会成功播放。就像某些资源正在等待被垃圾收集一样。
我尝试过的
我尝试播放非 DRMed 视频,效果非常好:我可以播放、停止、播放等,没有任何问题。
所以我猜测 EME 层面正在发生一些事情。
我浏览了整个互联网(两次),但无法给出明确的解释。 我发现的大多数提示都无法解释我的问题(例如,DRM 加密不好,但它如何才能第一次工作?)或解决它(例如
videoElement.src = ""
)。
我正在把一个瓶子扔进海里,在这里......
您能找到解决办法或原因吗?我在视频 contrib eme 中遇到了同样的问题,但我需要等待 5-10 秒以上才能成功播放。但偶尔,无论我重新加载播放器多少次,播放都会成功。
就像你提到的,无论它是否失败和工作,我都会看到完全相同的日志。
我简直迷路了。如有任何帮助,我们将不胜感激。