我正在使用MediaCodec
该类使用此链接中给出的代码解码 .mp4 视频。
我能够在屏幕上获得渲染的输出,但是当我尝试访问时outputBuffers[outIndex]
,我得到一个空指针错误。我无法弄清楚如何访问帧缓冲区以对其进行一些处理。
我正在使用MediaCodec
该类使用此链接中给出的代码解码 .mp4 视频。
我能够在屏幕上获得渲染的输出,但是当我尝试访问时outputBuffers[outIndex]
,我得到一个空指针错误。我无法弄清楚如何访问帧缓冲区以对其进行一些处理。
这是预期的(尽管没有记录)行为。您可以将输出发送到 aByteBuffer
或 a Surface
,但不能同时发送。
此处提供了一些可能感兴趣的其他示例。如果您解码为 a SurfaceTexture
,您可以将纹理渲染两次,一次渲染到 a,一次渲染View
到 pbuffer 表面。您可以使用glReadPixels
来获取数据并对其进行处理,也可以在 GLES 着色器中进行处理。
如果您提取到 a ByteBuffer
,您必须自己解释数据,这在使用专有输出格式的设备上是困难的。您会从缓冲区到缓冲区 CTS 测试中注意到,由于格式未知,因此未检查某些设备。