如何使用MediaProjectionManager将屏幕捕获为原始rgba缓冲区(无编码)?
我见过许多关于如何使用MediaCodec捕获屏幕并对其进行编码的示例,但我想使用自己的编码器。
答案 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建议