mediaPlayer的一些坑爹问题 以及解决surfview播放视频时候有黑屏闪现的问题
2015-06-27 15:58
513 查看
问题背景:在使用surfaceView去定制的播放器在播放视频开始时候会有黑屏一闪的问题,越差的手机效果越明显。
我的布局在surfaceview上面有一个imageview,目的是有一个视频第一帧作为背景图的需求。
使用的是mediaplayer去播放视频。解决这个问题的方法比较取巧也比较简单。
在surfaceview播放视频时候开始绘制有一定的缓冲时间,解决思路是在这段缓冲时间内将视频
的第一帧图片覆盖在surfaceview上,做法是mediaplayer在视频准备完毕即将播放的时候不将
覆盖在surfaceview上面的图片隐藏,而是做一个延时处理,过一小段时间再去将图片隐藏。
这样变向的去解决问题可能效果不是很好,看自己设置的延时时间了。
关于mediaplayer的操作这里就不细说了,我主要是通过当视频准备好并开始播放时使用handler的一个延时处理操作将图片置为GONE。这样效果
让黑屏一闪变的不明显,或消失。看设置的时间长短了。我自己大概是设置的160毫秒。
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
ImgView.setVisibility(View.GONE);
}
}, 160);
}
这个延时的操作放在视频准备完毕开始播放的同时。这里就不贴代码了。
个人将mediaplayer进行了封装,采用代理模式和策略模式。使用挺方便的。如果有兴趣的话留言我发代码给你。
还有一些关于mediaplayer的迷之问题
一般mediaPlayer在stop后 我们会将其置为release状态然后置为Null 做到需要播放资源时候才会有mediaplayer去占用更少的资源。
当偶遇到一个问题 是要求同时播放一段音频和一段视频(无声视频) 此时需要用到两个mediaPlayer。然而出现了奇怪的问题 只能
播放音频 却不能播放视频。 查了下文档提供的方法是 在stop()之后需要置为reset状态再调relea
我的布局在surfaceview上面有一个imageview,目的是有一个视频第一帧作为背景图的需求。
使用的是mediaplayer去播放视频。解决这个问题的方法比较取巧也比较简单。
在surfaceview播放视频时候开始绘制有一定的缓冲时间,解决思路是在这段缓冲时间内将视频
的第一帧图片覆盖在surfaceview上,做法是mediaplayer在视频准备完毕即将播放的时候不将
覆盖在surfaceview上面的图片隐藏,而是做一个延时处理,过一小段时间再去将图片隐藏。
这样变向的去解决问题可能效果不是很好,看自己设置的延时时间了。
关于mediaplayer的操作这里就不细说了,我主要是通过当视频准备好并开始播放时使用handler的一个延时处理操作将图片置为GONE。这样效果
让黑屏一闪变的不明显,或消失。看设置的时间长短了。我自己大概是设置的160毫秒。
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
ImgView.setVisibility(View.GONE);
}
}, 160);
}
这个延时的操作放在视频准备完毕开始播放的同时。这里就不贴代码了。
个人将mediaplayer进行了封装,采用代理模式和策略模式。使用挺方便的。如果有兴趣的话留言我发代码给你。
还有一些关于mediaplayer的迷之问题
一般mediaPlayer在stop后 我们会将其置为release状态然后置为Null 做到需要播放资源时候才会有mediaplayer去占用更少的资源。
当偶遇到一个问题 是要求同时播放一段音频和一段视频(无声视频) 此时需要用到两个mediaPlayer。然而出现了奇怪的问题 只能
播放音频 却不能播放视频。 查了下文档提供的方法是 在stop()之后需要置为reset状态再调relea
相关文章推荐
- iOS 学习资料大全
- Course Schedule I II LeetCode Java
- crtmpserver组网部署方案
- ClientDataSet复制
- 基于UDP的网络编程
- 大共享免费云服务器 Linux Nginx php mysql phpwind 性能测试
- Android实现ButterKnife
- html下拉框根据数据库的值选中默认值
- 《高效能人士的七个习惯》--读书笔记二
- 第十六周 项目三-max带来的冲突
- Window Word2003 打开文件时出现 “对话框打开时命令无法执行”的错误解决办法
- LintCode-排序矩阵中的从小到大第k个数
- Linux下expect批量更改交换机端口属性
- C语言实现封装
- Vc code
- iotop源码分析一
- opencv的susan角点检测算法
- 7.11
- 如何用vmware workstation来做虚拟化实验
- 异步编程中的最佳做法