Android 手动绘制到MediaPlayer';s面
我已将TextureView设置为MetoaPlayer以播放视频: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 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,这将允许您从一个切换到另一个。在“双重解码”活动中使用此功能(出于不同原因)