how can I have a high quality video recorder and audio recorder on android?

1.8k views Asked by At

Hello stackoverflow friends. I am new by android and have bellow code for capturing video. But this has low quality on phone( specially on android version 4.2 has very very low quality). I need a video capture with higher quality but i dont know other attribute for this. how can I have a high quality video recorder ?

    protected void startRecording() throws IOException 
    {

     mCamera.stopPreview();
     mCamera.unlock();
     mrec = new MediaRecorder();  
     mrec.setCamera(mCamera);   
     mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
     mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
     mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
     mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
     mrec.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
     mrec.setOutputFile(Videopath);
     mrec.setPreviewDisplay(surfaceHolder.getSurface());   
     mrec.prepare();
     isRecording=true;
     mrec.start();
    }
    //-------------------------------------------------------------
    protected void stopRecording() 
    {

        releaseOnExit();
         mCamera = Camera.open();
         mCamera.lock();  
         surfaceView = (SurfaceView) findViewById(R.id.surface_camera);
         surfaceHolder = surfaceView.getHolder();
         surfaceHolder.addCallback(this);
         surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

         Parameters params = mCamera.getParameters();
        mCamera.setParameters(params);
        mCamera.setDisplayOrientation(90);
        try {
            mCamera .setPreviewDisplay(surfaceHolder);
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mCamera .startPreview();
        btnlistToggle.setEnabled(true);
    }
 //-------------------------------------------------------------
    @Override
    public void surfaceCreated(SurfaceHolder holder) 
    {

         if (mCamera != null)
           {
              Parameters params = mCamera.getParameters();
              mCamera.setParameters(params);
              mCamera.setDisplayOrientation(90);
              try {
                mCamera .setPreviewDisplay(holder);
            } 
              catch (IOException e) 
              {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              mCamera .startPreview();

           }
           else
           {
              Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show();
             VideoRecorderActivity.this.finish();
           }


    }

Also I have a voice recorder that it has a very low quality too. what I do for upper quality voide recorder ,too?

public void Record() throws IOException 
        {

            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            recorder.setOutputFile(this.path); 

            try 
            {
               recorder.prepare();
            } 
            catch (IllegalStateException e) 
            {
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            try 
            {

                recorder.start();
            } 
            catch (Exception e) 
            {
            }

        }
1

There are 1 answers

2
Bipin Bhandari On

It is well discussed on stackoverflow Please refer this link to learn about profiles

And this link can also be helpful. I hope it helps and happy coding! Welcome to stackoverflow community!