1

我目前有两个不同的表面(一个来自 SurfaceView,另一个表面从 MediaCodec 创建)。

从一个表面复制到另一个表面有哪些不同的方法?

4

1 回答 1

0

在 Android 图形架构中,aSurface扮演包含图形数据(例如视频帧)的缓冲区消费者的角色。

典型的消费者不提供对其持有的缓冲区的访问。一个例外是ImageReader允许应用程序直接访问呈现到其Surface.

有一种效率较低的方法可以将 a 的内容复制SurfaceViewBitmapusing 中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)

https://developer.android.com/reference/android/graphics/Canvas#drawBitmap(android.graphics.Bitmap,%20android.graphics.Rect,%20android.graphics.Rect,%20android.graphics.Paint)

于 2021-09-14T07:13:36.217 回答