An AVPlayerItem cannot be associated with more than one instance of AVPlayer 你困扰了我这么久

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 对应的只有一个播放器  

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

浅析:如何构建稳定的系统

作者:Jesper L. Andersen 原文:How to build stable systems 译者:孙薇 准备工作 第一个决策是最简单却最为重要的...

2126
来自专栏IT技术精选文摘

微服务开发中的数据架构设计

3077
来自专栏MongoDB中文社区

微服务下的数据架构

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务,而本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地...

1292
来自专栏Web项目聚集地

「SSM实战」从零开发内容管理系统(一)

本课程将从零开始,手把手带大家完成项目开发,有助于掌握编码思维、经验与技巧,并拥有一个属于自己的线上作品。本课程并非从Java语法开始的,共20节课从零讲解此项...

1662
来自专栏ThoughtWorks

Web App性能优化之亮剑|洞见

自计算机诞生以来,系统性能问题亘古未变,从指令级优化到集成系统的优化,可谓愈来愈复杂。每种类型的性能问题即便出现的场景不尽相同,但依然有一些性能优化模式,久经沙...

3556
来自专栏社区的朋友们

是的,腾讯投票已经拥抱腾讯云了

小程序腾讯投票最近迁移到腾讯云了,本文记录了为什么做这个迁移,以及前后的工作。

1.3K6
来自专栏微服务生态

Martin Fowler关于微服务的原文翻译(一)

原文如下:http://martinfowler.com/articles/microservices.html

784
来自专栏java思维导图

微服务开发中的数据架构设计

微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业...

2102
来自专栏软件测试经验与教训

自动化测试实施方案

8726
来自专栏杨建荣的学习笔记

从“悲剧”的几个运维场景谈谈运维开发的痛点

我在这个事情上栽了很多的跟头,而且会发现事情变得越来越不可控。就好比我的期望是6,达到的结果是2,反差越大,发现改进的空间很大,以至于我会陷入一个死循环,我会想...

1202

扫码关注云+社区

领取腾讯云代金券