关于中间件在定制设备上打开摄像头显示颜色错位的问题分析?
解决方法:
1)让设备厂家或团队修改摄像头驱动(最好的方法)。
如果阅读懂了我们提供的 CameraView.java 的源码,就知道我们是通过安卓的系统API来获取摄像头支持采集的视频格式列表的,然后在其中选择一个格式采集。
我们看到这里iFmtList是一个预选列表,iFmtset是最终选择的视频采集格式。发现在实际运行中,往往会选择NV21的视频格式进行采集。从而出现颜色错位。
也许我们也可以通过调整iFmtList顺序的方式,使得摄像头可以优先使用其他格式进行采集。有可能设备厂商驱动对其他视频格式支持更好。
2)或者,如果是采集导致像素图不对,在APP层面做,把视频采集出来的像素数据,做红蓝位置调换(一个一个像素换,很耗CPU)
需要了解中间件的外部采集和看懂外部采集Demo代码。在这里下载最新版本的直播模块。
3) 如果是硬件编码导致不对,可以强制使用软件编码。
原因分析:
P2P直播模块采集端Demo运行在安卓设备上,然后用播放端播放发现颜色错位了,红蓝位置调换了。可能有一下两个方面的原因:
1)视频采集到的像素图像中,红色和蓝色的位置反了。
2)硬件编码器中处理图像时,红色和蓝色的位置反了。