私はEclipseでAndroid 2.2を使用しています。Androidでのビデオ処理
私はビデオをキャプチャするアプリケーションを作るのが好き、そしてフレームごとに、そのそれをを処理して、新しいビットマップを返し、処理されたビットマップを示している方法に、ビットマップとして、それを送信します。
私はAndroidにはあまり慣れていないので、誰かが私にそのようなことをするために必要なリソースに私を送ることができますか?
私はEclipseでAndroid 2.2を使用しています。Androidでのビデオ処理
私はビデオをキャプチャするアプリケーションを作るのが好き、そしてフレームごとに、そのそれをを処理して、新しいビットマップを返し、処理されたビットマップを示している方法に、ビットマップとして、それを送信します。
私はAndroidにはあまり慣れていないので、誰かが私にそのようなことをするために必要なリソースに私を送ることができますか?
Android SDKを使用して、次の手順を達成するために十分に簡単です:
Camera.PreviewCallback
は、多数の可能な画像フォーマットのフレームを表すデータのbyte[]
を返す。Bitmap
オブジェクトにデコードすることもできます。 2.2では、NDKとjnigraphicsを使用してビットマップのピクセルをネイティブコードで処理するオプションがあります。これはJavaレイヤーよりもはるかに高速です。Bitmap
の内容を表示してください。データを高速に移動するには、SurfaceView
に表示することをお勧めします。そのビューに含まれるSurfaceHolder
から入手可能なlockCanvas()
およびunlockCanvasAndPost()
メソッドを使用します。これだけのことをしたいのであれば、これを少しでも難なく行うことができます。しかし、これはビデオのキャプチャと同じではありません。 Androidは現在、フレームをエンコードされたビデオコンテナ(MPEG4、3GPなど)にリアルタイムでストリーム配信するためのフックを提供していません。ビデオキャプチャ機能は、フレームキャプチャからエンコードされたビデオの書き込みまでのプロセスを制御するMediaRecorder
にしっかりとラップされています。変更されたフレームのエンコード処理を支援するために、FFMPEG(ビルドされ、AndroidアプリケーションでNDKレイヤーを使用して実行されている)などの3番目の部分ライブラリが必要です。
私はあなたが2.2ターゲットを持っていることを知っていますが、Android 4.0は新しいバージョンのNDKをリリースしているので、ここから解放されています。プレゼンテーション層に送る。しかし、私はあなたの状況に適しているかどうかを知るために十分な時間を過ごしていません。
Camera.setPreviewCallback
をCamera.PreviewCallback#onPreviewFrame
とすると、カメラからのプレビューフレームを再生することができます。
コード2Dバーコードのためスキャナーが便利な出発点であるかもしれない: ZXing
さらに複雑なリアルタイムビデオ処理を行う場合は、OpenCV for Androidを強くお勧めします。
OpenCVは、ビデオをリアルタイムで処理できるコンピュータビジョンライブラリであり、エッジの検出や顔や一致する機能の検出などの複雑なタスクのような単純なタスクを実行するライブラリを備えています。
あなたのAndroid携帯電話では、特に広範なドキュメントや例が含まれているため、OpenCVを1日で使用できます。
私は本当にビデオをキャッチしたくない、プレビューを使用することは私にとって素晴らしいです。ありがとう! –
こんにちは、どのようにビットマップ画像のシリーズを使用してビデオを作成できますか?どのように私はそれをレンダリングできますか? –