MediaPlayer: BufferQueue has been abandoned 解决方案
最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfaceTextureDestroyed 方法中将MediaPlayer的 setSurface 方法置成了NULL,然后打算在屏幕切换完成后,即在 onSurfaceTextureAvailable 方法中重新给MediaPlayer设置一个Surface, 但是这样却带来一个问题:
每次打印完 E/BufferQueueProducer: [SurfaceTexture-0-25503-6] cancelBuffer: BufferQueue has been abandoned 后播放器都会dump掉,然后就报了一个错误:E/MediaPlayer: error(1, -19), 最开始我怀疑是Player在Playing状态下不能设置setSurface为NULL,后来实际尝试了下,是可以这么做的,百思不解的情况下求教了一下万能的Google, 结果在这篇博客中找到了答案:
https://blog.csdn.net/YoungHong1992/article/details/84324965
结合了下自己遇到的问题,大概明白了问题所在:当我的SurfaceTexture所关联的View从屏幕中remove掉了之后,这个SurfaceTexture也被回收掉了,所以只需要保证这个SurfaceTexture不被回收掉就行,按照这篇博客的内容,将SurfaceTexture提升为成员变量,问题解决。
一个相关联的StackOverflow: https://stackoverflow.com/questions/23807086/surfacetexture-has-been-abandoned
最新文章
- jsonp 使用总结
- C#基础入门一
- Android仿微信界面
- Spark - RDD(弹性分布式数据集)
- 代码静态分析工具--PMD,Findbugs,CheckStyle
- 每天一个小算法(Shell Sort2)
- 如果iis的配置文件 applicationHost.config坏掉了, 会在 C:\inetpub\history\ 中存储历史备份。复制过去还原就可以了-摘自网络
- ios专题 - 委托模式实现
- 常用Content-type汇总
- 《Java程序员面试笔试宝典》之 什么是AOP
- Ngui _CD技能特效
- 项目之软件project(我专业四年都未曾知道这四个字的含义,几句话便懂了)
- fbset视频参数说明
- Samples for Parallel Programming with the .NET Framework
- Python创建容器和集合之源码分析
- CSS 剩余宽度和高度完全填充
- Linux学习--线程控制
- .net core 使用MD5加密解密字符串
- tomcat是怎么找到项目lib目录下的jar包的,求大神解答
- zw·10倍速大数据与全内存计算