如何使用MediaProjectionManager捕获屏幕作为原始rgba缓冲区(不编码)?
我已经看到了许多如何捕获屏幕并使用MediaCodec进行编码的例子,但我想使用我自己的编码器来代替。
我最终使用了fadden建议的ImageReader
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
我很想看看你的结果