android 5,捕获屏幕为原始rgb缓冲区

时间:2015-08-06 23:51:44

标签: android android-mediaprojection

如何使用MediaProjectionManager将屏幕捕获为原始rgba缓冲区(无编码)?

我见过许多关于如何使用MediaCodec捕获屏幕并对其进行编码的示例,但我想使用自己的编码器。

2 个答案:

答案 0 :(得分:0)

MediaCodec支持RAW MIME类型,MIMETYPE_VIDEO_RAW,如果查看http://developer.android.com/reference/android/media/MediaFormat.html#MIMETYPE_VIDEO_RAW

但是,如果您甚至想要使用可以替换MediaCodec的自定义编解码器,那么整个事情应该与mInputSurface挂钩。

mMediaProjection.createVirtualDisplay("Recording Display", 
            screenWidth, screenHeight, screenDensity, 0 /* flags */, 
            mInputSurface, null /* callback */, null /* handler */);

您可能会注意到Surface API有一个lockCanvas,它可能是通过Canvas写入您的编解码器的API。

表面: https://developer.android.com/reference/android/view/Surface.html

画布: https://developer.android.com/reference/android/graphics/Canvas.html

我很想看到你的结果。

答案 1 :(得分:0)

我最终使用ImageReader作为fadden建议