title: how can I have a high quality video recorder and audio recorder on android?
body: <p>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 ?</p>
  
  <pre><code>    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();
             }
  
  
      }
  </code></pre>
  
  <p>Also I have a voice recorder that it has a very low quality too. what I do for upper quality voide recorder ,too?</p>
  
  <pre><code>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) 
              {
              }
  
          }
  </code></pre>