How to save SurfaceTexture as bitmap

后端 未结 2 2030
灰色年华
灰色年华 2020-12-06 13:21

When I decode a video to a surface I want to save the frames i want as bitmap/jpeg files. I don\'t want to draw on the screen and just want to save the content of the Surfac

2条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-06 13:37

    You have to render the texture.

    If it were a normal texture, and you were using GLES 2 or later, you could attach it to an FBO and read directly from that. A SurfaceTexture is backed by an "external texture", and might be in a format that the GL driver doesn't support a full set of operations on, so you can't do that. You need to render it, and read the result.

    FWIW, the way you go about saving the frame can have a significant performance impact. A full example demonstrating the use of MediaExtractor, MediaCodec, glReadPixels(), and PNG file creation is now up on bigflake (ExtractMpegFramesTest).

提交回复
热议问题