2011-12-30 5 views
6

私は、元のカメラアプリケーション(ビデオモード)でテストしたところ、Samsung Galaxy Tab 8.9が付属しています。 24 fps、640x480を達成できる保存されたフロントカメラビデオ。 (Windowsマシンに転送した後にビデオファイルのプロパティを見て)FPSが元のカメラアプリと同じでない理由

しかし、私はフロントCameraのコードをテストしながら書きます。

mCamera2.setPreviewCallbackWithBuffer(new PreviewCallback() { 
    public void onPreviewFrame(byte[] data, Camera camera) { 
     // image processing code placed here. 
    } 
}); 

Iを得ることができる最大の結果である(ディスクにビデオを保存しない。私は単にコールバック関数onPreviewFrameを測定レートをトリガ)

  • 15fpsの
  • 320×240、800×600

Samsung独自のカメラアプリと同じ性能を持ちたいと思います。私は特定のテクニックが不足していることを知っていますか

+0

http://developer.android.com/guide/topics/media/camera.html#capture-videoは、生のフレームキャプチャをやっていることですか? @ 24ビット@ 15fps = 800メガバイト@ 21メガ/秒のデータ。それを上回るものは、おそらく内蔵フラッシュストレージの書き込み速度を超えます。 –

+0

@MarcB私の改訂された質問をもっと詳しく見てください。 –

答えて

5

これらの結果が表示される理由は、コールバックで実際の動画ではなく動画がサンプリングされているためです。

カメラがファイルシステムに出力をダンプすると、JVMに触れることなく、カメラのビデオバッファからファイルシステムにデータをコピーする、非常に低レベルの書き込み操作が行われます。これは、ビデオを高品質かつ低レイテンシに保つために必要であり、スムーズな最終ビデオを保証します。実際のビデオでビデオ処理を行う必要がある場合は、ビデオの録画が完了した後に行うのが良いでしょう。

プレビューコールバックは、ビデオキャプチャ全体ではなく実際のビデオキャプチャのサンプルを提供するだけです。ほとんどの15fpsビデオはまだ滑らかに見えるので、プレビューコールバックは低い解像度、低いfpsプレビューバージョンキャプチャされている実際のビデオの組み込みのsamsungキャプチャアプリケーションでさえ、プレビューバージョンが表示されるのは、プレビューインターフェイスがすべて提供されているからです。

ファイルシステムのダンプや低レベルのバイト配列のデータ構造(例えばJNIラッパーを使用)以外のものからAndroidでビデオ録画の正確なベンチマークを得ることは不可能です。十分に簡単ですが、直接実行しようとすると、カメラからの入力読み取りをブロックし、とにかくベンチマークを吹き飛ばすでしょう。

+1

面白いです。カメラのビデオバッファに直接アクセスする方法についての情報はありますか? http://groups.google.com/group/android-ndk/browse_thread/thread/ec7e28a83fa93c8cからandroid-ndkグループから取得した情報からは、NDKから直接カメラにアクセスすることは正式にはサポートされていないようです。 –

+0

それは私の理解でもあります。NDK/SDKアクセサがないので、事実の後のファイルを除いて、カメラ自体から生のバイトストリームにアクセスすることはできません。 Androidソースコードを掘り下げて、利用可能なフックがあるかどうかを調べる価値があるかもしれません:android/frameworks/base/media/java/android/media/MediaRecorder.java –

+0

私の側でやってください。 –

4

カメラのFPSは、照明条件とAutoExposureパラメータによって異なります。

Camera.Parameters p = camera.getParameters(); 
p.setPreviewFpsRange(30000, 30000); // for 30 fps 
if (p.isAutoExposureLockSupported()) 
    p.setAutoExposureLock(true); 
camera.setParameters(p); 
+0

自動露出ロックをtrueに設定する副作用はありますか? – suitianshi

+0

これは副作用と考えられる場合は、暗い画像です。 – ggurov

+0

ありがとうございます。しかし、あなたの解決策は私にとってはうまくいかないようです。静止画プレビューfpsは明るい/暗い環境では安定しません。 – suitianshi

0

たぶんMediaRecorderのAPIが代わりにPreviewCallbackを使用して画像を撮影するカメラのAPIとの組み合わせでより良いかもしれない...

:(4.0 AndroidのAPI 14から、)すべての照明条件で、固定フレームレートを取得するための

http://developer.android.com/reference/android/media/MediaRecorder.html

関連する問題