android – 从MediaCodec解码输出缓冲区

我正在使用
Android MediaCodec库来解码存储在文件系统上的视频.我得到一个看起来合法的输出缓冲区(具有正确的bufferinfo.offset和大小).它的格式似乎是256(JPEG).我尝试使用BitmapFactory.decodeByteArray解码它,但结果为null.

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

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

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

点赞