mediaPlayer的一些坑爹问题 以及解决surfview播放视频时候有黑屏闪现的问题

问题背景:在使用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

你可能感兴趣的:(android,mediaplayer,surfaceview)