An AVPlayerItem cannot be associ

作者: 陈雨尘 | 来源:发表于2016-09-14 15:10 被阅读1534次

    1.发现问题的过程

    项目已经上线了  差不多半年多了, 最近对友盟统计里面的,统计到的问题进行清扫,修复。 发现有一个问题出现了400多次了 , An AVPlayerItem cannot be associated with more than one instance of AVPlayer 这个引起了崩溃 400多次,顿时 ,我觉得自己太失职了 ,这么大的问题竟然不知道,同时也很好奇 这么多次的崩溃 ,为什么没有用户反应, 顾不了那么多 了 于是 我就开始了  对这个问题的定位 修复。

     首先看下友盟收集到的错误日志

    很明显这个崩溃原因是  mediaPlayer  播放视频的时候引起的。

    也就是因为MPMoviePlayerController 播放视频的时候引起的,于是我也很好奇 怎么可能会呢 ,视频播放是我们项目中最常用的功能,如果说 有问题 不可能会一直没有收到 反馈啊,而且我们自己测试的时候也没有任何问题啊,现在我只知道是 MPMoviePlayerController 播放视频引起的 ,但是目前并不知道 这个问题怎么重现的,于是我在网上查找了相关的资料,发现很多人也有这个情况的出现,而且惊奇的发现有人提到这个问题是出现的iOS 8.4 上面的,咿!  我马上有去看下我的错误日志:

    原来如此  真的是这样的哦, 出问题的机器 全部都是ios  8.4 系统 和 ios 8.4.1 系统的 ,嗯 至少有这点发现 。

    于是我下载 ios 8.4 系统的模拟机 进行测试,测试的过程中 其实我大概能够猜想到  那些情况可能会出现问题 ,  经过我的不懈努力 差不多  用了 3个小时的时间 终于 重现了崩溃的过程。 如果 你们的程序中也有这样的问题而且 你还没有测试出如果出现这个崩溃  你不妨按照我的方法测试下:

    播放视频 — 切到后台 — 进入前台 — 换台 - 再切换后台 就会出现 (概率出现 但概率很高)  

    总结这个问题是 MPMoviePlayerController  在iOS 8.4 系统下 播放时候 中出现的问题

    2.总结前辈的处理方法

    当然,遇到这样的问题我也是会先去看下 前辈们是怎么解决的 ,看下他们的方法是不是 适合我,不是有那谁说过吗 ,站在的巨人的肩旁上 才能看的更远(原话是不是这个 😄)

    现在我总结下其他人的处理方法 你也可以测试下看适不适合你

    1.

    这种方法就是在 movieSouceType上面做文章, 也就是给视频播放器的 url 之前 指定 视频资源是 什么类型的    MPMovieSourceTypeUnknown , MPMovieSourceTypeStreaming  MPMovieSourceTypeFile  也就是说你要指定正确的类型,如果不知道就要用 MPMovieSourceTypeUnknown

    这个方法可能适合你 (然而对我并没有什么卵用)

    2.

    这种方法说的就说在你设置新的 URL之前要先stop 

    这个方法很多人试了 都说可以 所以你也试试吧

    3.

    [self prepareToPlay]; 

    有写人说的方法在你paly 之前 用这个方法

    然并卵 没什么鸟关系吧😄

    至于其他的回答的都比较扯的远点 就不一一细数了

    参考网址:http://stackoverflow.com/questions/16213611/crash-in-avplayeritem-attachtoplayer-an-avplayeritem-cannot-be-associated-w

    http://stackoverflow.com/questions/31210859/ios-8-4-avfoundation-attachtoplayer-or-attachtofigplayer-crash-an-avplayerit

    http://stackoverflow.com/questions/31337858/an-avplayeritem-cannot-be-associated-with-more-than-one-instance-of-avplayer-in 

    这stackoverflow网站上看有很多相关的文章 感兴趣的可以自己查找下

    3.最终解决我问题的方法

    如果上面的 这些方法你都没有解决这个问题,不要担心,我相信解决我的问题的 方法肯定适合你,你一定会解决的(如果没有解决 就当我没说😄)

    上面的 方法 就是说  在你切换视频源 的时候 也就是 换台的时候   重新创建一个播放器 把 之前的 播放器移除   保证一个URL 对应的只有一个播放器  

    这样至少我的问题是完美解决了   不知道我的总结有没有帮到你 !



    相关文章

      网友评论

        本文标题:An AVPlayerItem cannot be associ

        本文链接:https://www.haomeiwen.com/subject/pfmvettx.html