0

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

我已经看到了许多如何使用 MediaCodec 捕获屏幕并对其进行编码的示例,但我想使用我自己的编码器。

4

2 回答 2

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

我很想看看你的结果。

于 2015-08-07T00:31:02.060 回答
0

我最终按照fadden的建议使用了ImageReader

于 2015-08-18T09:29:57.440 回答