我正在使用Android MediaCodec库来解码存储在文件系统上的视频。我得到一个看起来合法的输出缓冲区(适当的bufferinfo.offset
和size
)。它的格式似乎是256(JPEG)。我尝试使用BitmapFactory.decodeByteArray
对其进行解码,但结果为null
。
有谁知道确定输出缓冲区格式的正确方法?开始解码输出字节数组的正确方法是什么?
答案 0 :(得分:2)
MediaCodec
颜色格式由MediaCodecInfo.CodecCapabilities类定义。内部使用256,通常并不意味着您有JPEG数据的缓冲区。这里的混乱很可能是因为你正在查看ImageFormat
类中的常量,但那些仅适用于相机输出。 (例如,ImageFormat.NV16
是YCbCr格式,而COLOR_Format32bitARGB8888
是RGB,但两者都具有数值16。)
可以找到MediaCodec
使用的一些示例,包括行使MediaCodec
的CTS测试的链接here。在某些设备上,您将无法解码ByteBuffer
输出中的数据,而必须解码为Surface
。