android - 如何将 SurfaceTexture 保存为位图

标签 android opengl-es-2.0 android-mediacodec decoder

当我将视频解码到表面时,我想将我想要的帧保存为位图/jpeg 文件。我不想在屏幕上绘图,只想将 SurfaceTexture 的内容保存为图像文件。

最佳答案

你必须渲染纹理。

如果它是普通纹理,并且您使用的是 GLES 2 或更高版本,则可以将其附加到 FBO 并直接从中读取。 SurfaceTexture 由“external texture”支持,并且可能采用 GL 驱动程序不支持全套操作的格式,因此您不能这样做。您需要渲染它并读取结果。

FWIW,保存帧的方式会对性能产生重大影响。演示如何使用 MediaExtractorMediaCodecglReadPixels() 和 PNG 文件创建的完整示例现已发布在 bigflake ( ExtractMpegFramesTest ) .

关于android - 如何将 SurfaceTexture 保存为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366660/

相关文章:

android - 使用 MediaCodec 和 MTK Codec 编码时选择 H264 Profile

Java Android Rectangle.intersects 在循环中无法正常工作

android - 为 App 设置自定义主题时 TextInputLayout 崩溃

android - 我可以将 sdf db 文件转换为 sqlite db 文件并在 android 中使用吗?

ios - 如何使用 GLKView 以较低的分辨率进行绘制?

android - 使用 MediaCodec 解码原始 AAC 音频数据适用于 Android 4.4 但不适用于 4.3

java - 将元素插入排序列表

android - 如何使用近距离和远距离识别 3D 对象内部或外部 3D 对象的点击

java - 将 jshort 转换为无符号短整型

java - Android Media Codec API 基本示例