-1

このコードを使用して、デバイスでカメラ ビデオ モードを開きます。

package com.example.camera_test;

import java.io.ByteArrayOutputStream;

import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore.Video;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.hardware.Camera;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

    private static final int CAMERA_PIC_REQUEST = 1337; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener()
        {
        @SuppressLint("NewApi") @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
            Intent videoIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
            startActivityForResult( videoIntent,0);

ボタンをクリックすると、ビデオのカメラが開きます。今、私はビデオストリームを取得し、ビデオをデバイスディスクに記録/保存するのではなく、リアルタイムで毎回ビデオから1フレームを取得して、このフレームをフラッシュメモリカードに保存し、フレームで何かを行い、その後フレームを削除したいと考えています次のフレームなど...

そのため、最終的にデバイスを上下左右に移動すると、常にビデオからフラッシュメモリに1フレーム保存され、何かを実行して削除されます。

フレーム 私は、フレームである 1 つの画像を意味します。現在のフレームをフラッシュ メモリに抽出するには、何かを実行して、このフレームと次のフレームを削除します。

どうすればそれを考え、実行できるようになりますか?

4

1 に答える 1

0

ビデオ フィードのプレビューを表示してから、Camera.takePicture を呼び出して、呼び出した時点でのフレームのデータのバイト配列を含むコールバックを取得します。Android デベロッパー サイトにすべてを設定する良い例があります:
http://developer.android.com/guide/topics/media/camera.html#capture-picture

開発者サイトには takePicture 呼び出しをトリガーするボタンがありますが、コードからも簡単に呼び出すことができます。提供されたパラメータに基づいて、フレームの圧縮された JPEG バージョンまたは生データ バージョンのいずれかを受け取ることができます。SD カードに JPEG として保存する場合は、システムに圧縮を任せる方が効率的です。複数のフレームが必要な場合は、開発者ガイドに従って同じプログラムをセットアップしますが、Camera#setPreviewCallback メソッドを使用して、ビデオ フィードのすべての単一フレームのコールバックを取得します。

于 2013-01-20T20:03:29.980 に答える