当我将视频解码到表面时,我想将我想要的帧保存为位图/jpeg 文件。我不想在屏幕上绘图,只想将 SurfaceTexture 的内容保存为图像文件。
最佳答案
你必须渲染纹理。
如果它是普通纹理,并且您使用的是 GLES 2 或更高版本,则可以将其附加到 FBO 并直接从中读取。 SurfaceTexture
由“external texture”支持,并且可能采用 GL 驱动程序不支持全套操作的格式,因此您不能这样做。您需要渲染它并读取结果。
FWIW,保存帧的方式会对性能产生重大影响。演示如何使用 MediaExtractor
、MediaCodec
、glReadPixels()
和 PNG 文件创建的完整示例现已发布在 bigflake ( ExtractMpegFramesTest ) .
关于android - 如何将 SurfaceTexture 保存为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366660/