Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Android 2.2版从摄像头录制视频_Android_Video_Video Capture - Fatal编程技术网

通过Android 2.2版从摄像头录制视频

通过Android 2.2版从摄像头录制视频,android,video,video-capture,Android,Video,Video Capture,在这里输入code当我尝试在安卓2.2版上从摄像头录制视频时。它有一些错误。没有人能找到解决方案。İAndroid MediaRecorder API有任何缺陷。我怎样才能解决这个问题。 我有更多的错误。你们可以在图片中看到其中的一些。 还有这样一个错误:相机预览-13 非常感谢 recorder.prepare()失败并抛出Java.lang.illegalexeption 以下是代码: package app.raceway.com; import java.io.File; impor

在这里输入code
当我尝试在安卓2.2版上从摄像头录制视频时。它有一些错误。没有人能找到解决方案。İAndroid MediaRecorder API有任何缺陷。我怎样才能解决这个问题。 我有更多的错误。你们可以在图片中看到其中的一些。 还有这样一个错误:相机预览-13 非常感谢

recorder.prepare()失败并抛出Java.lang.illegalexeption 以下是代码:

package app.raceway.com;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

public class VideoCapture extends Activity implements  SurfaceHolder.Callback {
    MediaRecorder recorder;
    SurfaceHolder holder;
    public Camera camera;
    File video;
    String filePath;
    boolean recording = false;
      private static final int FRAME_RATE = 15;

      private static final int CIF_WIDTH = 320;

      private static final int CIF_HEIGHT = 240;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


    recorder = new MediaRecorder();

    setContentView(R.layout.main);

    SurfaceView cameraView = (SurfaceView) findViewById(R.id.cameraView);
    holder = cameraView.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    String path=Environment.getExternalStorageDirectory().getAbsolutePath()+
    "/video/videocapture_example.mpg4";
    // make sure the directory we plan to store the recording in exists
    File sampleDir = Environment.getExternalStorageDirectory();
    try { 
        video = new File(sampleDir+"/videofile.3gp");
        sampleDir.createNewFile();
          //video = File.createTempFile("videofile", ".3gp", sampleDir);
      } 
      catch (IOException e)
      {
          Log.e("deneme","sdcard access error");

      }
      filePath=video.getAbsolutePath();

}

private void initRecorder() {

    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

}
private void prepareRecorder() throws IOException{
    recorder.setCamera(camera);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
    recorder.setOutputFile(filePath);
    recorder.setMaxDuration(50000); // 50 seconds
    recorder.setMaxFileSize(5000000); // Approximately 5 megabytes
try {

} catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


}



public void onclickSaveVideo(View v) throws IOException {
    if (recording) {
    Toast t=new Toast(getApplicationContext());
    t.makeText(getApplicationContext(), "Video Recording stopped",Toast.LENGTH_SHORT);
    t.show();
        recorder.stop();
        recording = false;

        // Let's initRecorder so we can record again
        initRecorder();     
    } else {
        try {
            prepareRecorder();
            //recorder.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        recording = true;
        recorder.prepare();
        recorder.start();
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        recorder.stop();
        Toast t=new Toast(getApplicationContext());
        t.makeText(getApplicationContext(), "Video Recording started",Toast.LENGTH_SHORT);
        t.show();
    }
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera=Camera.open();

    try {
        camera.setPreviewDisplay(holder);
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    camera.startPreview();
    camera.unlock();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    if (recording) {
        recorder.stop();
        recording = false;
    }
    recorder.release();
    finish();
    camera.release();
}


}
艾敏

根据您提供的logcat输出图像,该方法正在发生崩溃。您将从文档中看到必须首先调用的
start
方法,否则它将抛出
IllegalStateException
。在您的代码中,
prepare()
的所有调用都被注释掉了吗


编辑:我们在我的回答下面的评论中把事情整理好了。他在模拟器上运行此代码,而该模拟器不支持
MediaRecorder

我添加了代码。请帮助我找到解决方案。我试了10天。Willytate,我试了很多次,但当我试着解决问题时,我把它标记为注释。当我取消注释recorder.prepare()时。它有错误:**java.io.IOException:准备失败。**ahh。只是为了再次检查您是否在模拟器上尝试此操作,对吗?我更新了代码。我使用的是right emulator(Android 2.2)。我的错误发生了变化:06-01 16:37:13.057:error/CameraInput(34):没有可用于显示的曲面06-01 16:37:13.057:error/AuthorDriver(34):命令13已完成,错误为-1 06-01 16:37:13.067:error/MediaRecorder(625):准备失败:-1如果您能提供帮助,那就太好了。“注意:目前,MediaRecorder在模拟器上不工作。”请参阅:好的。谢谢你救了我的命:)。我为此工作了大约十天。我尝试了所有方法,但我没有意识到”“注意:目前,MediaRecorder在模拟器上不工作。”“这个。非常感谢budy