Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android摄像头预览颜色问题(红色和蓝色互换)_Android_Android Camera_Opengl Es 2.0_Android Mediacodec_Glsurfaceview - Fatal编程技术网

Android摄像头预览颜色问题(红色和蓝色互换)

Android摄像头预览颜色问题(红色和蓝色互换),android,android-camera,opengl-es-2.0,android-mediacodec,glsurfaceview,Android,Android Camera,Opengl Es 2.0,Android Mediacodec,Glsurfaceview,在Android上使用GLSurfaceView渲染相机预览时,我观察到一个奇怪的视觉故障 红色和蓝色似乎在相机预览提要中互换-绿色看起来不错。请参见下面的屏幕截图 我只在少数设备上看到这个问题(所有型号的三星Galaxy S4) 只有在使用某些分辨率时才会出现此故障-720x960以上的分辨率可以,低于此分辨率的任何分辨率都会出现问题(例如640x480) 该问题发生在前后摄像头上 通过更改CameraCaptureActivity.java的第185行,可以在Grafika示例应用程序中重

在Android上使用GLSurfaceView渲染相机预览时,我观察到一个奇怪的视觉故障

红色和蓝色似乎在相机预览提要中互换-绿色看起来不错。请参见下面的屏幕截图

我只在少数设备上看到这个问题(所有型号的三星Galaxy S4)

只有在使用某些分辨率时才会出现此故障-720x960以上的分辨率可以,低于此分辨率的任何分辨率都会出现问题(例如640x480)

该问题发生在前后摄像头上

通过更改CameraCaptureActivity.java的第185行,可以在Grafika示例应用程序中重现该问题(假设您手边有三星Galaxy S4):

    // openCamera(1280, 720);      // change this ...
    openCamera(640, 480);      // to this
我需要将H264编码为640x480。我想我可以通过使用更高的分辨率(相同的纵横比)来解决这个问题,但仍然将编码器设置为运行在640x480-不幸的是,这导致了一个可怕的块状视频馈送,可能是由于重新采样。

基于尝试和错误(以及发现的线索和错误)我发现这是由于打开录制提示功能造成的:

    params.setRecordingHint(true); // this causes the problem
我也有一些纵横比的问题,通过关闭这个解决了。因此,三星似乎在驱动程序或硬件层面上搞乱了setRecordingHint功能

有趣的是,如果设置未记录的“视频大小”值,那么我就能够解决问题并保持setRecordingHint处于启用状态

    params.set("video-size", "640x480");
我不知道这是在做什么:

    params.setPreviewSize(640, 480);


但显然,它正在产生影响。但是,由于这似乎是未记录的,并且关闭SetRecordingInt似乎不会对性能产生任何影响-我认为可以禁用SetRecordingInt。

没错,当SetRecordingInt以某种分辨率设置为true时,也会导致绿屏问题。
    params.setPictureSize(640, 480);