如何在画上黑色后再次在曲面上播放视频?

时间:2014-11-17 10:02:00

标签: android android-mediaplayer surfaceview surfaceholder

我有一个视频播放器可以重置并在一个活动中加载新视频。我使用这种方法遇到的一个问题是,在加载下一个视频时,仍会显示上一个窗口的最后一帧。有几个人有同样的问题。

我通过在onCompletion监听器中执行以下操作解决了这个问题,类似于this questionthis other one中的说明:

mPlayer.stop();
mPlayer.release();
Canvas canvas = mPlayView.getHolder().lockCanvas();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
mPlayView.getHolder().unlockCanvasAndPost(canvas);
mPlayer = null;

然后,我又称之为:

mPlayer = new MediaPlayer();
mPlayer.setDataSource(videoPath);
mPlayer.setDisplay(mSurfaceHolder);
mPlayer.setScreenOnWhilePlaying(true);
mPlayer.setOnPreparedListener(this);
mPlayer.setOnCompletionListener(this);
mPlayer.setOnVideoSizeChangedListener(this);
mPlayer.setOnErrorListener(this);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.prepare();
// wait for onPrepared callback and play

问题是视频播放界面仍然是黑色 - 不再显示视频。

如何“重置”画布并让它再次显示视频?

或者,如果这不起作用,我该如何清除最后一帧的画布呢?我tried this但下一个加载的视频仍会显示上一帧的最后一帧。

0 个答案:

没有答案