我可以强制编解码器将H264数据解码为特定的ColorFormat(来自它支持的ColorFormats)吗?

时间:2014-08-11 05:07:47

标签: android decode h.264 yuv mediacodec

在Android 4.1及更高版本上,我使用MediaCodec框架来解码H264数据。我看到我使用的编解码器实例(通过createDecoderByType)支持多种颜色格式。但是,它始终以第一索引颜色格式(来自其支持的列表)提供输出。

有没有办法强制解码器从它支持的ColorFormats中以特定的颜色格式发出解码数据?我知道开发人员文档确实提到密钥KEY_COLOR_FORMAT只能为编码器设置,但后来帮助我理解为解码器提供多种支持颜色格式的合理性是什么?

1 个答案:

答案 0 :(得分:2)

不,目前无法指定解码器输出的颜色格式。

对于使用未记录的专有缓冲区布局的设备,这尤其令人讨厌。

将输出定向到Surface会导致更一致和可移植的行为,但是从API 19开始,仍然没有方便的方法来获取像素数据(ImageReader不能与MediaCodec输出格式一起使用{{{ 1}}可能很慢,可以在RGB等工作)。如果你可以使用OpenGL着色器做你需要的东西,那么事情就可以很好地工作了(参见例如“show + capture camera”中的效果。)