我目前有两个不同的表面(一个来自 SurfaceView,另一个表面从 MediaCodec 创建)。
从一个表面复制到另一个表面有哪些不同的方法?
我目前有两个不同的表面(一个来自 SurfaceView,另一个表面从 MediaCodec 创建)。
从一个表面复制到另一个表面有哪些不同的方法?
在 Android 图形架构中,aSurface
扮演包含图形数据(例如视频帧)的缓冲区消费者的角色。
典型的消费者不提供对其持有的缓冲区的访问。一个例外是ImageReader
允许应用程序直接访问呈现到其Surface
.
有一种效率较低的方法可以将 a 的内容复制SurfaceView
到Bitmap
using 中PixelCopy
。虽然TextureView
允许您Bitmap
直接获取。
然后,您可以Bitmap
使用Surface
它的Canvas
.
链接:
https://source.android.com/devices/graphics/arch-sh
https://developer.android.com/reference/android/media/ImageReader
https://developer.android.com/reference/android/view/PixelCopy
https://developer.android.com/reference/android/view/Surface#lockCanvas(android.graphics.Rect)