我遇到了一个问题,当我尝试用android MediaCodec输出h.264视频。我从onPreviewFrame获取帧数据,然后将其提供给MediaCodec,并使用OpenGL在GLSurfaceView上绘制帧。它可以在一些设备和操作系统版本上正常工作,例如5.0系统的三星s5,5.1系统的三星note4以及一些android 4.4设备。当我需要使用MediaCodec输出视频时,如何知道android设备上相机的YUV色彩格式?
但是,当我试图在其他设备上运行这个应用程序,如三星s6与android 6.0,三星note5与android 6.0和5.0设备,有一些wrong.Image我画GLSurfaceViewis正确和正常,但我得到了看起来没有颜色或错误颜色的错误视频。
我试图找到答案,我终于意识到它可能是由MediaCodec接受的颜色格式的差异引起的。在我的程序中,我假设mediaCodec可以接受YUV420SP,所以我转换nv21 i420SemiPlanar并将其馈送到MediaCodec.i猜测mediaCodec的颜色格式是解决问题的关键,但这是真的吗?为什么mediaCodec在差异设备和操作系统版本上有如此大的差异?
有人遇到同样的问题?
我该怎么做才能避免这个问题?
2016-09-26
4snows