我正在使用 MediaCodec
类使用此 link 中给出的代码解码 .mp4 视频.
我能够在屏幕上获得呈现的输出,但是当我尝试访问 outputBuffers[outIndex]
时,出现空指针错误。我不知道如何访问帧缓冲区以对其进行一些处理。
最佳答案
这是预期的(尽管未记录)行为。您可以将输出发送到 ByteBuffer
或 Surface
,但不能同时发送。
一些可能感兴趣的其他示例可用 here .如果解码为 SurfaceTexture
,则可以渲染纹理两次,一次为 View
,一次为 pbuffer 表面。您可以使用 glReadPixels
获取数据并对其进行处理,或者在 GLES 着色器中进行处理。
如果您提取到 ByteBuffer
,您必须自己解释数据,这在使用专有输出格式的设备上很困难。您会从缓冲区到缓冲区 CTS 测试中注意到,由于格式未知,因此未检查某些设备。
关于android - outputBuffers 返回空指针,尽管帧在屏幕上呈现,在 Android 中使用 MediaCodec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18776776/