Android 5,捕捉屏幕作为原始RGB缓冲区



如何使用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

我很想看看你的结果

相关内容

  • 没有找到相关文章

最新更新