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で動作するようにエンコーダーを設定することで問題を回避できると思っていました。残念ながら、これはおそらくリサンプリングによる恐ろしい塊状のビデオフィードにつながります。試験&誤差に基づい

答えて

1

私はこの記録ヒント機能をオンにすることによって引き起こされることを把握することができた(と手がかりはin this answerhereを発見):

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

Iはまた、いくつかのアスペクト比の問題を抱えていましたこれはこれをオフにすることで解決されました。だから、サムスンは、ドライバやハードウェアレベルでsetRecordingHintの機能を混乱させるようだ。

面白いことに、ドキュメント化されていない「ビデオサイズ」の値を設定した場合は、問題を修正してsetRecordingHintをオンにしておくことができます。

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

私は、これはに比べてやっているのか分からない:

params.setPreviewSize(640, 480); 

または

params.setPictureSize(640, 480); 

が、明らかにそれが影響力を持っています。しかし、これは文書化されていないと思われ、setRecordingHintをオフにするとパフォーマンスに影響を与えないように見えます。setRecordingHintを無効にすると思います。

+0

これはtrueです。一部の解像度でsetRecordingHintがtrueに設定されていると、緑色の画面に問題が発生します。 – RxRead

関連する問題