5

ビデオ録画機能を持つアプリケーションを作成しています。多くの光がある通常の日中の時間帯には、30 fps のビデオを録画することができます。

ただし、光が少ない場合、フレーム レートは約 7.5 fps に低下します (まったく同じコードを使用)。私の推測では、結果として得られるビデオの画質が最高になるように、Android が露出時間で舞台裏で何かを行っていると思います。

ただし、より良い品質の画像よりも、より高い fps を好みます。露出が問題であると仮定すると、適切な fps (15fps+) を確保するために露出時間を制御する方法はありますか。機能はありますが、setExposureCompensation()setAutoExposureLock()もしないようです。

誰かが以前にこの問題を抱えていましたか? 私の問題を引き起こしているのは露出でもありますか?

ヒット/提案は素晴らしいでしょう。

4

4 に答える 4

4

ここに簡単な説明があります。ライトが低いということは、ビデオにノイズが多いことを意味します。ノイズが増えると、エンコーディング エンジンは、必要な圧縮を得るためにはるかに多くの労力を費やす必要があります。エンコーダーにノイズ除去機能がない限り、エンコード エンジンは通常の状態よりもはるかに多くのノイズを処理する必要があります。

より技術的な回答が必要な場合: ノイズが多いということは、エンコーダーのモーション推定エンジンが投げ出されることを意味します。これは、最大の CPU サイクルを消費する部分です。ノイズが多いほど、圧縮が悪化するため、エンコーダーの他の部分でさえ、基本的にはより多くの処理を実行します。より多くのビットが生成されます。これは、エンコーディング エンジンとエントロピー エンジンもより多くの処理を行うため、パフォーマンスが低下することを意味します。

一般に、ハイエンド カメラでは、センサー内のイメージング パイプラインによって多くのノイズが除去されます。ただし、携帯電話のセンサーでは期待しないでください。[これは、DSLR で見られる ISO 性能です]。

于 2012-08-26T18:48:19.707 に答える
3

この問題はAndroid4.2GalaxySIIIで発生しました。パラメータを試した後、機能し始めた1つの呼び出しが見つかりました。

Camera.Parametersを見てください。印刷すると、次のように表示されます。

preview-fps-range=15000,30000;
preview-fps-range-values=(8000,8000),(10000,10000),(15000,15000),(15000,30000),(30000,30000);

これrangeにより、fpsが「遅くなる」ことができます。

この呼び出しsetPreviewFpsRange(30000, 30000);により、fpsは約30に留まります。

于 2013-01-18T17:16:32.003 に答える
1

これは正しいですsetPreviewFpsRange()。一定の fps を取得するには、 を呼び出す必要があります。CCD が原因で表示されるフレーム レートが低下します。光が少ない場合、fps が低下するため、より良い写真を生成できます (静止モード)。

また、より高いフレーム レートを実現するには、以下を使用する必要があります。

Camera.Parameters parameters=camera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
parameters.setRecordingHint(true);

camera.setParameters(パラメータ);

于 2013-07-03T12:39:05.167 に答える