最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfaceTextureDestroyed 方法中将MediaPlayer的 setSurface 方法置成了NULL,然后打算在屏幕切换完成后,即在 onSurfaceTextureAvailable 方法中重新给MediaPlayer设置一个Surface, 但是这样却带来一个问题: 每次打印完 E/B…
1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如果不好用,基本断定是驱动程序问题. 解决方案:重装驱动程序. 注:一定要应用该驱动来播放,不要安装了好几个扬声器,如果选择错了,就会走很多弯路. 2.只有在程序中播放有问题. 首先,检查MediaPlayer实例的作用域,如果MediaPlayer是局部变量,出了作用域,系统垃圾回收的时候,就会回收…
接上篇文章,最近做视频背景的游戏. 需要使用安卓的meidaplayer来播放视频,并跳转. 跳转时发现,有些视频可以跳到位置上,有些不行. GG了好久,可以使用FFMPEG这个工具重新转一次.并加上关键帧即可. 果然能SeekTo到正确的位置上了. 以下是bat命令: ffmpeg -i  -x264opts   keyint=:min-keyint= -c:a copy h:/videos/out.mp4 keyint=20应该是20帧一个关键.大家可以试一试. 可以直接下载哟.以下是懒人链…
6 BufferQueue 上一篇已经说到,BufferQueue是SurfaceFlinger管理和消费surface的中介,我们就开始分析bufferqueue. 每个应用 可以由几个BufferQueue? 应用绘制UI 所需的内存从何而来? 应用和SurfaceFlinger 如何互斥共享资源的访问? 6.1 Buffer的状态 const char* BufferSlot::bufferStateName(BufferState state) { switch (state) { ca…
题外话 Covid-19疫情的强烈反弹,小区里检测出了无症状感染者.小区封闭管理,我也不得不居家办公了.既然这么大把的时间可以光明正大的宅家里,自然要好好利用,八个字 == 努力工作,好好学习 一.前言 这篇文章中,将详细讲解 生产者 -- 图形缓冲队列 -- 消费者 这个模型的的具体工作流程.我们还是从我们的demo运行流程着手. 可以再回头看看 Android 12(S) 图形显示系统 - 示例应用(二) 在demo示例中,我们获取buffer --> 填充数据 --> 送出显示的代码如下…
本文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码.例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示.我将尽量讲得简短而清晰,不展示 那些不相关的代码.但是,我不建议你读这篇文章,也不建议你开发这类应用,而应该转而开发一些戳鱼.打鸟.其乐融融的程序.好吧,下面的内容是写给那些执 迷不悟的人的,看完之后也许你会同意我的说法:Android只是一个玩具,很难指望它来做靠谱的应用. 1.从摄像头采集视频 可以通过摄像头Preview的回调,来获…
04-29 11:13:54.284 13584-13584/com.uniubi.smartfrontdesk E/art: Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Try again" 04-29 11:13:54.292 13584-13606/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 13606 (…
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 因为个人工作主要是Android多媒体播放的内容,在工作中查看源码或设计程序经常会遇到调用API: static inline int native_window_api_connect(struct ANativeWindow* window, int api) static inline int native_window_api_disconnect(struct ANativeWindow* window, int a…
一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : 从 Idle 到 End 状态就是 MediaPlayer 整个生命周期; -- 生命周期开始 : 进入 Idle (闲置) 状态; -- 生命周期结束 : 进入 End (结束) 状态; Idle 和 End 状态转换 : -- 进入 Idle 状态 : MediaPlayer 刚被创建 new…
前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放. MediaPlayer函数 1.)实例化方式 使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 使用create的方式 MediaPlayer mp = MediaPlayer.create(this, R.raw.test); 2.)设置播放源 s…