3

GLSurfaceView를 사용하여 Android에서 카메라 미리보기를 렌더링 할 때 이상한 시각적 결함을 관찰하고 있습니다.Android 카메라 미리보기 색상 문제 (빨간색과 파란색이 바뀜)

빨강과 파랑이 카메라 미리보기 피드에서 교체 된 것 같습니다. 녹색은 괜찮습니다. 아래 화면 캡처를 참조하십시오.

enter image description here

나는 몇 장치에서이 문제 (삼성 갤럭시 S4의 모든 변종)을보고하고있다.

글리치는 특정 해상도 (720x960 이상)를 사용할 때만 발생하며 그 이하는 문제가됩니다 (예 : 640x480).

이 문제는 전면 및 후면 카메라 모두에서 발생합니다.

문제가 GRAFIKA 샘플 응용 프로그램의 재현과 같이 CameraCaptureActivity.java의 라인 (185)을 변경하여 (당신은 편리한 삼성 갤럭시 S4가 가정) :

// openCamera(1280, 720);  // change this ... 
    openCamera(640, 480);  // to this 

나는 640 × 480에서 H264 인코딩해야합니다. 나는 더 높은 해상도 (동일한 종횡비)를 사용하지만 640x480에서 실행되도록 인코더를 설정함으로써이 문제를 해결할 수 있다고 생각했습니다. 불행히도 이것은 리샘플링으로 인해 끔찍한 고르지 못한 비디오 피드로 이어집니다.

params.setRecordingHint(true); // this causes the problem 

나는 또한 일부 화면 비율의 문제가되었다

답변

1

나는이이 기록 힌트 기능을 설정하여 발생되는 것을 알아낼 수 있었다 시행 & 오류를 바탕으로 (그리고 단서 in this answerhere을 발견) 이 문제를 해결함으로써 해결되었습니다. 그래서 삼성은 드라이버 나 하드웨어 수준에서 setRecordingHint 기능을 엉망으로 만든 것 같습니다.

흥미롭게도 문서화되지 않은 "비디오 크기"값을 설정하면 문제를 해결하고 setRecordingHint를 계속 유지할 수 있습니다.

params.set("video-size", "640x480"); 

나는이에 비해 무엇을하고 있는지 모른다 :

params.setPreviewSize(640, 480); 

또는

params.setPictureSize(640, 480); 

을하지만 명확하게 영향을 미치고있다. 그러나 이것이 문서화되지 않은 것으로 나타나고 setRecordingHint를 끄면 성능에 아무런 영향을 미치지 않는 것 같습니다. setRecordingHint를 사용하지 않도록 설정하는 것이 좋습니다.

+0

사실, 일부 해상도에서 setRecordingHint가 true로 설정되면 녹색 화면 문제가 발생합니다. – RxRead