Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 手动绘制到MediaPlayer';s面_Android_Drawing_Android Mediaplayer_Surface_Textureview - Fatal编程技术网

Android 手动绘制到MediaPlayer';s面

Android 手动绘制到MediaPlayer';s面,android,drawing,android-mediaplayer,surface,textureview,Android,Drawing,Android Mediaplayer,Surface,Textureview,我已将TextureView设置为MetoaPlayer以播放视频: TextureView textureView = new TextureView(context); addView(textureView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); textureView.setSurfaceTextureListener(this); @Override public void o

我已将TextureView设置为MetoaPlayer以播放视频:

TextureView textureView = new TextureView(context);
addView(textureView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
textureView.setSurfaceTextureListener(this);

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface)
{
    return false;
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
{
    this.surface = new Surface(surface);
    mediaPlayer.setSurface(this.surface);
    prepareAndPlay();
}
视频播放正常

但当我试图在表面上画的时候,视频播放并没有开始

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
{
    this.surface = new Surface(surface);
    mediaPlayer.setSurface(this.surface);

    // DRAW FIRST FRAME ON SURFACE

    Bitmap bitmap = BitmapFactory.decodeFile(firstFramePath);
    Canvas canvas = surface.lockCanvas(null);
    canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), new Rect(0, 0, canvas.getWidth(), canvas.getHeight()), null); 
    bitmap.recycle();
    surface.unlockCanvasAndPost(canvas);

    prepareAndPlay();
}
在mediaplayer上调用play()时,播放未开始

我想,该表面移动到无效状态,MediaPlayer无法播放视频。但是logcat是空的。 有任何方法都可以使用media player在同一个曲面上进行绘制。

您不能这样做

“曲面”是生产者-消费者对的生产者侧。你不能有两个制片人。(如果需要血淋淋的详细信息,请参阅。)

使用TextureView,您可以使用
setSurfaceTexture()
更改底层SurfaceTexture,这将允许您从一个切换到另一个。此功能在“双重解码”活动中使用(出于不同原因)。

您不能这样做

“曲面”是生产者-消费者对的生产者侧。你不能有两个制片人。(如果需要血淋淋的详细信息,请参阅。)

使用TextureView,您可以使用
setSurfaceTexture()
更改底层SurfaceTexture,这将允许您从一个切换到另一个。此功能在“双重解码”活动中使用(出于不同原因)。

您不能这样做

“曲面”是生产者-消费者对的生产者侧。你不能有两个制片人。(如果需要血淋淋的详细信息,请参阅。)

使用TextureView,您可以使用
setSurfaceTexture()
更改底层SurfaceTexture,这将允许您从一个切换到另一个。此功能在“双重解码”活动中使用(出于不同原因)。

您不能这样做

“曲面”是生产者-消费者对的生产者侧。你不能有两个制片人。(如果需要血淋淋的详细信息,请参阅。)

使用TextureView,您可以使用
setSurfaceTexture()
更改底层SurfaceTexture,这将允许您从一个切换到另一个。在“双重解码”活动中使用此功能(出于不同原因)