Android 从SurfaceView获取帧
我现在面临的困难是拍摄SurfaceView的截图。有人能帮忙吗 我的团队正在做一个Android项目,我们使用MediaCodec对视频提要进行解码,并将提要渲染到表面上。 活动实现Android 从SurfaceView获取帧,android,screenshot,surfaceview,Android,Screenshot,Surfaceview,我现在面临的困难是拍摄SurfaceView的截图。有人能帮忙吗 我的团队正在做一个Android项目,我们使用MediaCodec对视频提要进行解码,并将提要渲染到表面上。 活动实现 SurfaceHolder.Callback 然后我们创建了一个SurfaceView并添加回调: mySurfaveView.getHolder().addCallback(this); 然后,我们开始解码视频馈送(我们有一个方法进行解码) 这段视频很好,现在我想截取在SurfaceView上渲染的内容。我
SurfaceHolder.Callback
然后我们创建了一个SurfaceView并添加回调:
mySurfaveView.getHolder().addCallback(this);
然后,我们开始解码视频馈送(我们有一个方法进行解码)
这段视频很好,现在我想截取在SurfaceView上渲染的内容。我试过几种方法来做这件事,但没有成功。以下是我尝试过的:
请帮忙。谢谢大家! 如本文所述,您无法捕获SurfaceView SurfaceView很少希望覆盖
onDraw()
。通常,SurfaceView的视图部分是一个透明的孔
对于MediaCodec输出的特定情况,您有两种选择。可以将输出定向到,然后使用OpenGL ES渲染视频帧两次。一次到SurfaceView进行显示,一次到屏幕外缓冲区,您可以从中捕获像素
另一种方法是用替换SurfaceView,然后使用getBitmap()
调用捕获视频帧
可以在中找到各种示例。这里很好地解释了您要做的事情:谢谢您的帮助。我使用了一个TextureView,它起作用了。你能给出一个示例代码,说明如何将
TextureView
替换为surfaceView
?MediaCodec.configure
函数仅获取SurfaceObject
作为输入,我不知道如何以及在何处将其替换为TextureView
surfaceChanged(SurfaceHolder holder, int format, int width, int height)