专栏首页雨尘分享An AVPlayerItem cannot be associated with more than one instance of AVPlayer 你困扰了我这么久

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 条评论
登录 后参与评论

相关文章

  • In-App Purchase 内购丢单、串单处理

    陈雨尘
  • MySQL 常用的指令

    mysql.server start 启动 mysql.server stop 关闭 quit ...

    陈雨尘
  • TCP 看我就够了

    陈雨尘
  • Linux 删除文件夹和文件的命令

    -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思

    周小董
  • 深入分析Java反射(八)-优化反射调用性能

    Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以...

    Throwable
  • vue之vue-router实例

    本文转自: https://www.cnblogs.com/SamWeb/p/6610733.html

    开发架构二三事
  • Android低功耗蓝牙BLE开发小结

    BLE是蓝牙4.0标准的一部分,旨在解决传统蓝牙连接慢、能耗大的问题,Google在Android 4.3(API 18)中引入了对BLE的支持。BLE连接使用...

    fdroid
  • 教你 30 秒发布一个 TypeScript 包到 NPM

    文章读译自 The 30 second guide to publishing a typescript package to npm,部分内容有修改哈。

    savokiss
  • emacs配置文件3

    ;;普通设置 (setq inhibit-startup-message t);关闭起动时闪屏 (setq visible-bell t);关闭出错时的提示声...

    py3study
  • Python变量类型全书

    ? 糖豆贴心提醒,本文阅读时间6分钟 一、Python 变量类型简介 1、Python中变量的特点: 我们知道,在Python中,变量有如下的特点: (1)...

    小小科

扫码关注云+社区

领取腾讯云代金券