从MediaCodec解码输出缓冲区

时间:2013-08-24 03:38:44

标签: android mediacodec

我正在使用Android MediaCodec库来解码存储在文件系统上的视频。我得到一个看起来合法的输出缓冲区(适当的bufferinfo.offsetsize)。它的格式似乎是256(JPEG)。我尝试使用BitmapFactory.decodeByteArray对其进行解码,但结果为null

有谁知道确定输出缓冲区格式的正确方法?开始解码输出字节数组的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

MediaCodec颜色格式由MediaCodecInfo.CodecCapabilities类定义。内部使用256,通常并不意味着您有JPEG数据的缓冲区。这里的混乱很可能是因为你正在查看ImageFormat类中的常量,但那些仅适用于相机输出。 (例如,ImageFormat.NV16是YCbCr格式,而COLOR_Format32bitARGB8888是RGB,但两者都具有数值16。)

可以找到MediaCodec使用的一些示例,包括行使MediaCodec的CTS测试的链接here。在某些设备上,您将无法解码ByteBuffer输出中的数据,而必须解码为Surface