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
MediaPlayer: BufferQueue has been abandoned 解决方案的更多相关文章
- [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如 ...
- MediaPlayer SeekTo 不准确的解决方案
接上篇文章,最近做视频背景的游戏. 需要使用安卓的meidaplayer来播放视频,并跳转. 跳转时发现,有些视频可以跳到位置上,有些不行. GG了好久,可以使用FFMPEG这个工具重新转一次.并加上 ...
- android Gui系统之SurfaceFlinger(2)---BufferQueue
6 BufferQueue 上一篇已经说到,BufferQueue是SurfaceFlinger管理和消费surface的中介,我们就开始分析bufferqueue. 每个应用 可以由几个Buffer ...
- Android 12(S) 图形显示系统 - BufferQueue的工作流程(九)
题外话 Covid-19疫情的强烈反弹,小区里检测出了无症状感染者.小区封闭管理,我也不得不居家办公了.既然这么大把的时间可以光明正大的宅家里,自然要好好利用,八个字 == 努力工作,好好学习 一.前 ...
- Android 用MediaCodec实现视频硬解码(转)
本文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码.例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示.我将尽量讲得简短而清晰,不展示 那些不相 ...
- Could not allocate CursorWindow size due to error -12 错误解决方法
04-29 11:13:54.284 13584-13584/com.uniubi.smartfrontdesk E/art: Throwing OutOfMemoryError "pthr ...
- Android 12(S) 图形显示系统 - Surface 一点补充知识(十二)
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 因为个人工作主要是Android多媒体播放的内容,在工作中查看源码或设计程序经常会遇到调用API: static inline i ...
- Android四大组件--MediaPlayer详解(转)
一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : ...
- Android音视频之MediaPlayer音视频播放
前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...
随机推荐
- MySQL运行机制原理&架构
1.MySQL知识普及: MySQL是一个开放源代码的关系数据库管理系统. MySQL架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统 ...
- G1垃圾收集器设计目标与改良手段【纯理论】
在之前已经详细对CMS垃圾回收器进行了学习,今天准备要学习另一个全新的垃圾收集器---G1(Garbage First Collector 垃圾优先的收集器),说是一种全新的,其实G1垃圾收集器已经出 ...
- JDBC课程3--通过ResultSet执行查询操作
内容: ResultSet 结果集,封装了使用JDBC 进行查询;JDBCTools.release(rs,st, conn); 这个模块进行了更新, 同时结束的时候也关闭ResultSet,结束该 ...
- 神奇搜索算法A*
A* A*是一种启发式搜索算法,又叫最佳图搜索算法. 何谓启发式搜索? 众所周知,计算机在执行搜索算法时是没开上帝视角的.因此,在搜索时,往往显得盲目,把所有可能的状态全部遍历,这种搜索我们统称盲目搜 ...
- QProgressBar 样式
setStyleSheet( "QProgressBar{border:1px solid #FFFFFF;" "height:30;" "backg ...
- JS 仿支付宝input文本输入框放大组件
input输入的时候可以在后边显示数字放大镜 <!doctype html> <html lang="en"> <head> <meta ...
- html中的table导出Excel (亲测有用(●'◡'●))
演示地址: http://www.jq22.com/yanshi3312 具体代码: <!DOCTYPE html> <html lang="zh-CN"> ...
- Define Interfaces and Share Class Members through Mixins in Dart
In this lesson, we will cover Interfaces and Mixins. Interfaces act as a contract containing propert ...
- Linux gdb分析core dump文件
文章目录1. coredump1.1 coredump简介1.2 coredump的文件存储路径1.3 coredump产生的条件1.4 coredump产生原因2. 测试生成coredump1. c ...
- eclipse中Maven项目启动报错“3 字节的 UTF-8 序列的字节 3 无效。”
发生原因不知道. 解决方法是在pom.xml中追加 <properties> <project.build.sourceEncoding>UTF-8</project.b ...