从 MediaCodec 解码输出缓冲区

Utk*_*nha 5 android android-mediacodec

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

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

fad*_*den 2

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

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