相关疑难解决方法(0)

在视频完成时从surfaceview清除视频帧

我创建了一个在表面视图上播放视频的媒体播放器.完成视频后,视频的最后一帧仍然在表面上.我想从表面删除视频帧,因为一段时间后,另一个视频开始播放.

视频流程如下:

现在:表面上的视频 - >表面上的最后一个视频帧 - >表面上的另一个视频.

但所需的流程是:

要求: 表面上的视频 - >清晰的表面(黑色) - >表面上的另一个视频.

任何人都可以帮助解决这个问题.

谢谢Ishan jain

video android surfaceview media-player

11
推荐指数
3
解决办法
9711
查看次数

在图像渲染后,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
查看次数

纹理查看视频和位图显示

我有一个显示位图(占位符图像)的TextureView,当用户加载视频时,textureView应该显示视频.

我设法在纹理视图中播放视频并在纹理视图中显示位图,但是当按顺序完成时,我只得到一个黑屏.

在我的onSurfaceTextureAvailable方法中,我在表面视图上绘制一个位图,如下所示:

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_add_clip);
    Canvas canvas = lockCanvas();
    canvas.drawBitmap(bm, (width/2)-(bm.getWidth()/2), (height/2)-(bm.getHeight()/2), null);
    unlockCanvasAndPost(canvas);
}
Run Code Online (Sandbox Code Playgroud)

当用户从其库中选择视频时,我将Uri加载到媒体播放器中并将曲面设置为媒体播放器.但是仍然显示位图.我试图通过清除画布删除位图,它确实删除了位图,但纹理视图只是黑色,也不会显示视频.

public void setMediaPlayer(MediaPlayer mediaPlayer) {
    // Canvas canvas = lockCanvas();
    // canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    // unlockCanvasAndPost(canvas);

    Surface s = new Surface(getSurfaceTexture());
    mMediaPlayer = mediaPlayer;
    mMediaPlayer.setSurface(s);
    mMediaPlayer.setOnPreparedListener(this);
}
Run Code Online (Sandbox Code Playgroud)

有些东西告诉我,用于显示视频的表面视图位于我在TextureAvailble上绘制的位图的后面.当我尝试清除画布时,我也清除了媒体播放器想要使用的表面.有解决方案吗

android android-canvas textureview android-bitmap

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