Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Java 相机错误1001_Java_Android_Video_Android Camera - Fatal编程技术网

Java 相机错误1001

Java 相机错误1001,java,android,video,android-camera,Java,Android,Video,Android Camera,在过去的几天里,我一直在试图解决这个错误,但没有运气。我正试图建立一个应用程序,记录视频文件,以便我的RTP传输发送到服务器。除以下信息外,LOGCAT不提供任何其他信息: Camera Error 1001并且该消息一直重复,直到我停止应用程序。摄像头初始化,准备运行正常。调用MediaRecorder.start()时引发错误 这是录像机类的代码 MediaRecorder mMediaRec; Camera mCamera; Button startRecording = null; Su

在过去的几天里,我一直在试图解决这个错误,但没有运气。我正试图建立一个应用程序,记录视频文件,以便我的RTP传输发送到服务器。除以下信息外,LOGCAT不提供任何其他信息:

Camera Error 1001
并且该消息一直重复,直到我停止应用程序。摄像头初始化,准备运行正常。调用MediaRecorder.start()时引发错误

这是录像机类的代码

MediaRecorder mMediaRec;
Camera mCamera;
Button startRecording = null;
SurfaceView mSurfaceView;
SurfaceHolder mSurfaceHolder;
//CameraPreview mPreview;
boolean isRecording = false;
public static Socket sock;
public Uri filePath;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_media_streamer);
    // Show the Up button in the action bar.
    setupActionBar();
    //addListenerOnButton();

    Log.d(" Streamer On create", "Initializing camera");
    initialize();
    //startRecording();

}

/**
 * Set up the {@link android.app.ActionBar}, if the API is available.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupActionBar() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.media_streamer, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

public void initialize()
{

    startRecording = (Button)findViewById(R.id.button_start);
    mCamera = Camera.open();

    Log.d("Initialization", "Camera opened");
    mSurfaceView = (SurfaceView)findViewById(R.id.survace_camera);
    mSurfaceHolder = mSurfaceView.getHolder();
    mSurfaceHolder.addCallback(this);
    //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    //mSurfaceHolder.setType(SurfaceHholder.SURFACE_TYPE_PUSH_BUFFERS);
    Log.d("Streamer init", "Camera Initialized");
}

protected void startRecording()
{
    //Socket sock = new Socket();

        Log.d("Start recording method","Attempting to start recording");

        try
        {
            mMediaRec = new MediaRecorder();

            mMediaRec.setPreviewDisplay(mSurfaceHolder.getSurface());

            mCamera.unlock();
            mMediaRec.setCamera(mCamera);
            mMediaRec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
            mMediaRec.setAudioSource(MediaRecorder.AudioSource.MIC);
            mMediaRec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            mMediaRec.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
            mMediaRec.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

            filePath = getOutputMediaFileUri();
            mMediaRec.setOutputFile(filePath.getPath());

            mMediaRec.setMaxFileSize(50000);
            Thread.sleep(2000);
            //mMediaRec.set
            //mCamera.unlock();
            mMediaRec.prepare();
            Log.d("Start recording", "Recorder params set");
            Thread.sleep(2000);
            mMediaRec.start();
            isRecording = true;

} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
        //StreamerBGManager bg = new StreamerBGManager();
        //bg.doInBackground(new String[]{});
catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
catch(IllegalStateException e)
{
e.printStackTrace();
releaseMediaRecorder();
releaseCamera();
}

}

protected void stopRecording()
{
    mMediaRec.stop();
    mMediaRec.release();
    mCamera.release();
    releaseMediaRecorder();
    releaseCamera();
    isRecording = false;
}

private void releaseMediaRecorder()
{
    if(mMediaRec != null)
    {
        mMediaRec.reset();
        mMediaRec.release();
        mMediaRec = null;
        mCamera.lock();
        isRecording = false;
    }
}

private void releaseCamera()
{
    if (mCamera != null){
        mCamera.release();        // release the camera for other applications
        mCamera = null;
        isRecording = false;
    }
}

public void toggleRecord(View view)
{
    if(isRecording)
        stopRecording();
    else
        startRecording();
}

/*public void addListenerOnButton()
{

    startRecording.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(isRecording)
                stopRecording();
            else
                startRecording();

        }
    });
}*/

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    if (mCamera != null){
      Parameters params = mCamera.getParameters();

      mCamera.setParameters(params);
        try {
            mCamera.setPreviewDisplay(mSurfaceHolder);
            mCamera.startPreview();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    else {
        Toast.makeText(getApplicationContext(), "Camera not available!",    Toast.LENGTH_LONG).show();
        finish();
    }
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    mCamera.stopPreview();
    mCamera.release();
    //mMediaRec.release();
}

检查一下这一点,我的实现和onSurfaceChanged实现之间的唯一区别。所以我添加了这个函数,但它仍然给出相同的错误。所有函数调用的顺序都相同。。。我不知道是什么错误你能找到解决办法吗?我在一些设备中也有摄像头错误1001,但不知道它的真正含义,也不知道如何解决它。谢谢你,珍雅,我在这个问题上纠缠了很久。我的工作是调用默认的摄像头应用程序,用它来录制并获得录制视频的文件位置。这不是我想要的,但很好。你也尝试过不同的设置吗?比如编码或者格式。是否尝试明确设置预览大小?(这在Cam的参数中…)我曾经遇到过一些问题,这是一个解决方案。所以,只是一个晴天霹雳。