当我将视频解码到表面时,我想将我想要的帧另存为位图/jpeg文件。我不想在屏幕上绘制,只想将SurfaceTexture的内容另存为图像文件。
最佳答案
您必须渲染纹理。
如果它是正常纹理,并且您使用的是GLES 2或更高版本,则可以将其附加到FBO并直接从中读取。 SurfaceTexture
由“external texture”支持,并且格式可能是GL驱动程序不支持其上的全部操作,因此您不能这样做。您需要渲染它,并读取结果。
FWIW,保存框架的方式可能会对性能产生重大影响。 bigflake(ExtractMpegFramesTest)上有一个完整的示例,演示了MediaExtractor
,MediaCodec
,glReadPixels()
和PNG文件创建的用法。