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