加载多个页面后,iOS 上的视频失败

Posted

技术标签:

【中文标题】加载多个页面后,iOS 上的视频失败【英文标题】:Video fails on iOS after multiple page loads 【发布时间】:2018-12-07 19:15:12 【问题描述】:

我看到本地视频无法仅在 ios 上加载。只有在通过导航进出页面多次加载同一页面后才会发生这种情况。前 10 次左右的视频加载正常,然后将失败并出现媒体错误 3(请参见此处:https://developer.mozilla.org/en-US/docs/Web/API/MediaError)。发生这种情况后,在重新加载之前,应用程序中的其他任何地方都不会播放任何视频。

我使用的是 iOS 11.4,ionic 3。有人有什么想法吗?

html

<ion-content class="ion-content--pulldown-bg">
    <div class="ion-content-wrapper">
        <video id="vid" loop preload="metadata" playsinline autoplay muted>
          <source src="assets/videos/dummy_video.mp4" type="video/mp4" />
        </video>
    </div>
</ion-content>

打字稿:

  ionViewDidLoad() 
    this.videoElement = document.getElementById("vid") as HTMLMediaElement
    this.videoElement.onerror = () => 
    alert("Error " + this.videoElement.error.code + "; details: " + this.videoElement.error.message)
  

【问题讨论】:

【参考方案1】:

我在这里找到了一个可行的解决方案:MEDIA_ERR_DECODE on HTML5 video in iOS UIWebView after many plays

页面卸载后硬件解码器缓冲区没有删除视频,您必须手动执行。

离子溶液:

ionViewWillUnload() 
    // Clear the videos from the decoder buffer. 
    // Buffer fills up on iOS when multiple videos are loaded
    const elements = document.getElementsByTagName("video")
    for (let i = 0; i < elements.length; i++) 
        elements[i].src = ""
        elements[i].load()
    

【讨论】:

以上是关于加载多个页面后,iOS 上的视频失败的主要内容,如果未能解决你的问题,请参考以下文章

iOS中WKWebView加载网页失败或者无网络状态判断

加载多个嵌入式 Youtube 视频时页面加载性能更好?

如何测量 iOS Safari 上的页面加载时间?

页面加载后无法找到嵌套元素

iOS小菊花,可用于(页面加载前,视频加载前);

MAC下载软件为何无法安装?提示“下载失败,使用已购页面再试一次”