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类可用于控制音频/视频文件或流的播放 ...
随机推荐
- [dev][ipsec][distributed] strongswan如何做热迁移/高可用/High Availability
问题描述: 原生的基于kernel 的 strongswan 如何做高可用,HA,High Availability 问题分析: 基于我们已知的,ipsec,strongswan的知识.问题分解如下: ...
- Ubuntu armhf 版本国内源
Ubuntu armhf 版本国内源: deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted u ...
- 说说客户端访问一个链接URL的全过程
讲讲登录权限是如何控制的 我们可以把这个过程类比成一个电话对话的过程.当我们要打电话给某个人,首先要知道对方的电话号码,然后进行拨号.打通电话后我们会进行对话,当然要对话肯定需要共同的语言,如果一 ...
- tensor flow 线性回归
# -*- coding: utf-8 -*-"""Spyder Editor This is a temporary script file.tensor flow 之 ...
- SATB深入详解与问题剖析【纯理论】
延着上一次[https://www.cnblogs.com/webor2006/p/11147893.html]的理论继续. SATB: 在G1中,使用的是SATB(Snapshot-At-The-B ...
- MyBatis3-topic-01 -安装/下载/官方文档 -执行输入一条已经映射的sql语句
mybatis XML 映射配置文件 (官方文档) -对象工厂(objectFactory) -配置环境(environments) -映射器(mappers) 本地IDEA搭建/测试步骤 创建数据库 ...
- maya 在 pymel 中运行 mel
maya 在 pymel 中运行 mel 前言 maya mel 自身定义了很多有用的方法,当我们用 pymel 开发的时候,不想重新写一遍 mel 已经有的功能,那么就可以在 pymel 中运行 m ...
- js获取此刻时间或者把日期格式时间转换成字符串格式的时间
getTime(val){ if (val&val instanceof Date){ d = val; }else{ d = new Date(); }; var year = d.getF ...
- sbt 配置个屁的国内源
~/.sbt/repositories [repositories] #本地源 local #兼容 Ivy 路径布局 apache-ivy: https://repo1.maven.apache.or ...
- C#格式化信息,格式化数字、格式化日期
一.格式化方法: 1.ToString()实例方法 使用当前文化: varname.ToString("C4"); 使用特定文化: varname.ToString("C ...