相关疑难解决方法(0)

媒体播放器完成后如何清除表面支架?

我用surfaceview和mediaplayer制作了一个视频播放器.我有10个视频和10个按钮.如果点击每个按钮,则每个视频都在播放.

这是我的代码..

//onCreate   
holder = surfaceview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


//Button1
if(mp == null)mp = new MediaPlayer();

mp.setDataSource(mediaplay_path);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();


//Button2
if(mp != null){
    mp.stop();
    mp.reset();
}

mp.setDataSource(mediaplay_path2);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();

//Button3~Button10 is same as Button2..
Run Code Online (Sandbox Code Playgroud)

一切都好.我的自定义视频查看工作正常.但是当视频转到下一个视频时,前一个视频的最后一个场景会保留一段时间并转到下一个视频场景.

我认为这是因为在下一个视频播放之前,之前的表面视图应该是清晰的.但我不知道如何清除表面视图或表面支架.

我已经搜索了这个,但只能找到如何播放视频,而不是如何清除从媒体播放器中消失的表面视图.

请帮帮我~~!

android surfaceview

13
推荐指数
3
解决办法
9139
查看次数

在图像渲染后,MediaPlayer无法渲染到TextureView

我有一个MediaPlayer渲染视频TextureView.这很有效.

现在,我希望在TextureView给定时间MediaPlayer内在此上显示静止图像,然后将视频呈现为相同TextureView.

这是我渲染位图的代码:

Canvas canvas = mTextureView.lockCanvas();
canvas.drawBitmap(sourceBitmap, matrix, new Paint());
mTextureView.unlockCanvasAndPost(canvas);
Run Code Online (Sandbox Code Playgroud)

在此之后,任何播放视频的尝试都会导致ERROR_INVALID_OPERATION(-38)从视频播放器触发.

我试着评论出来的电话drawBitmap,但错误仍然发生了.如此看来,中调用简单的动作lockCanvas,然后unlockCanvasAndPost在结果TextureView是不适合MediaPlayer使用.

有什么方法可以将其重置为TextureView允许MediaPlayer使用它的状态吗?

我正在研究Android 4.2.2.

video android android-mediaplayer textureview

4
推荐指数
1
解决办法
5380
查看次数

用黑色矩形清洁SurfaceTexture

我正在使用ExoplayerGL SurfaceTexture(来自TextureView)来显示视频.我在视频播放中重复使用相同的表面.

我释放播放器并实例化一个新播放器.第二次显示SurfaceTexture时,它会显示上一个视频中的旧纹理,直到播放器开始播放并用黑色填充Surface.

我正在寻找一种方法来绘制黑色矩形以填充黑色表面,但无法实现这一点.

android exoplayer android-textureview

3
推荐指数
1
解决办法
3315
查看次数