android列表中使用MediaPlayer播放视频的一个问题

原创 2016年07月31日 22:50:44

现在越来越多的新闻app都开始有直接在新闻列表中播放视频的功能,这极大的方便了用户进行视频新闻的查看,不需要点击进入视频播放页,还可快速的切换到列表中其它视频的播放。

前段时间,刚开发了款app,也有跟新闻app类似的列表视频播放功能,效果图如下:


这里播放的是网络的hls视频,所以直接使用了系统的MediaPlayer进行播放。由于列表中会存在多个视频,所以列表item中针对视频播放都会有个SurfaceView,为了避免不必要的渲染和界面切换时的黑屏,这里默认都不显示SurfaceView,只有在点击播放的时候才会显示SurfaceView。

原先考虑的比较简单,点击了播放后,开始调用MediaPlayer设置视频源和SurfaceHolder便开始了播放了。但出来的现象总是会有个问题,第一次播放时,总是播放失败,不出视频画面,如下图:


但第二次点击播放的时候,却能播放成功。

查看logcat提示信息,发现第一次播放进行SurfaceHolder和视频源设置的时候报错了,提示The surface has been released。debug后发现MediaPlayer设置Holder的时候,Holder的值也不为空,但为什么会提示surface被released了呢?

想到在列表中对SurfaceView的显示控制,可能跟这里的控制有点关系,尝试在SurfaceView的几个生命周期回掉中加入log输出,观察几个生命周期和MediaPlayer设置时的顺序。结果是surfaceCreated是在MediaPlayer设置之后(设置放在播放按钮的click中),所以原因应该就是SurfaceView的初始化没有那么及时,才会出现第一次播放不了,第二次能播放的原因了。

所以这里的解决办法为,将MediaPlayer的设置和播放,放在surfaceCreated中,保证每次播放总是在SurfaceView初始化之后进行。



转载请声明原文地址:http://blog.csdn.net/sagittarius1988/article/details/52081431

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android 音频视频合并

1. 生成mp4 audio 通过录音 生成mp4 audio [java] view plaincopy // ----------------...

android 6.0 textview 跑马灯失效和出现抖动的解决方法

最近搞个项目,要在地图上显示天气信息,我使用了个textview加跑马灯效果进行滚动显示,一切都很正常。 前几天测试在6.0系统的机子上进行了测试,发现跑马灯失效了,一直在抖动。感觉像是6.0兼容性...

Android开发中在一个VideoView的情况下多个视频按顺序循环播放

实现效果描述:给手机SDcard的某个目录下放N个视频文件,然后通过你自己写的App播放视频的组件VideoView来实现循环播放。 也就是说,我们要实现的播放顺序是1-2-3-4-1-2

Android学习二、MediaPlayer播放视频

MediaPlayer主要是用来播放音频的,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放时候的图像输出。 有几点要注意的: 1、MediaPl...

Android之多媒体--使用MediaPlayer和SurfaceView播放视频

应用场景: 使用VideoView播放视频简单、方便,但除此之外,我们还可以利用MediaPlayer用来播放视频。但是我们知道MediaPlayer主要用于播放音频,它是没有提供输出图像的输出...

Android:使用MediaPlayer和SurfaceView播放视频

使用MediaPlayer和SurfaceView播放视频标签(空格分隔): android使用MediaPlayer和SurfaceView播放视频 Android中提供的MediaPlayer播...

28、从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频

应用场景: 使用VideoView播放视频简单、方便,但除此之外,我们还可以利用MediaPlayer用来播放视频。但是我们知道MediaPlayer主要用于播放音频,它是没有提供输出图像的输出界面...

Android使用MediaPlayer播放视频

目录结构 布局文件 activity_main.xml <merge xmlns:android="http://schemas.android.com/apk/res/android" x...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)