2013-01-16 17 views
17

私は、カメラフレームでリアルタイム画像処理を行うアプリケーションに取り組んでいます。そのために、プレビューコールバックのメソッドonPreviewFrameを使用します。
これは、少なくとも640x480以上の解像度を持つプレビューフレームをサポートするカメラでうまく動作します。しかし、カメラがこのような大きなカメラプレビュー解像度をサポートしていない場合、アプリケーションはそのようなフレームの処理を拒否するようにプログラムされています。今、私が持っている問題はSony Xperiaのような携帯電話にあります。これは解像度1280x720までビデオを録画できる非常に素晴らしいデバイスですが、残念ながら最大のカメラプレビューサイズは480x320で、私のニーズには小さすぎます。Androidビデオフレーム処理

私が知りたいのは、これらを入手する方法です(012808807122まで)larger camera frames?明らかに、カメラアプリケーションはその解像度でビデオを記録できるため、このアプリケーションは何らかの形でその大きなフレームにアクセスできる必要があるため、可能でなければなりません。私のアプリケーションから同じことをする方法?

アプリケーションはAndroid 2.1以降をサポートしている必要がありますが、問題がAndroid 4.0以降の場合にのみ解決策が見つかったとしても非常にうれしいです。

この質問はhttp://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recordingに似ていますが、私はビデオを保存する必要はありません - 私は、これらの高解像度のビデオフレームを必要とする...

は事前にありがとうございました!

+0

'' SurfaceTexture''あります11+あなたはSDKにジャンプすることができる場合カメラのプレビューに使用できます。 OpenGLで画像処理のニーズが十分であれば、SurfaceTextureベースのプレビューで解像度が高いかどうかを確認することができます。 – harism

+0

良い点。私は、Camera.Parameters.getSupportedPreviewSizes()はカメラのみに依存しているが、カメラがプレビューしているサーフェスには依存しないと考えました。私はそれを試みます。 一方、V4L2(VideoForLinux2)インターフェース経由でカメラにアクセスすることは可能ですか?たぶんV4Lでカメラをより良くコントロールできます... – DoDo

+0

まず、カメラオブジェクトに別のプレビューフォーマットを指定しない限り、onPreviewFrameはYUV(NV21)画像を表示します。 この種の形式で作業するためのアンドロイド版SDKのメソッドがないため、お尻の痛みになります。このフォーマットはデフォルトのものなので、すべてのデバイスと100%の互換性が必要な場合は、これを管理する必要があります。 もちろん、画像をより管理しやすい形式に変換することもできますが、これはパフォーマンス面でコストがかかるため、リアルタイム処理が必要な場合は、これが問題になります。 – Mario

答えて

6

MediaRecoderデータからフレームをデコードすることしかできないようです。 ffmpegを使用して、LocalSocketの記録データをデコードすることができます。

は、以下のオープンソースプロジェクトが役立つことを願って:

ipcamera-用-アンドロイド:https://code.google.com/p/ipcamera-for-android/

spydroid-ipcamera:https://code.google.com/p/spydroid-ipcamera/

+0

これらのプロジェクトとアイデアを共有してくれてありがとう。それは私が探していたものです。 – DoDo

0

OpenCVライブラリをご覧ください。 フルフレームを受信できるメソッドがあります。

0

私は印象があります:ビデオプレビューのサイズが小さく、設定されたビデオ録画フレームレートよりも遅く、遅いです。

私はかつてこれについての解決策を探していました。より良い方法は、ビデオレコーダーからビデオストリームを取得し、ビデオストリームからデータを直接処理することです。

あなたはAndroidのipカメラでいくつかの例を見つけることができます。