2014-01-11 104 views
1

你好,stackoverflow的朋友。我是新來的android和捕捉視頻的波紋管代碼。 但是這在手機上質量很差(特別是在Android 4.2版本中質量非常低)。 我需要更高質量的視頻捕捉,但我不知道這個其他屬性。我怎麼能有一個高品質的錄像機?如何在Android上擁有高質量的錄像機和錄音機?

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(); 
      } 


    } 

此外,我有一個錄音機,它也有一個非常低的質量。我對高質量的錄音機也做了什麼?

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

大家都在計算器 請參閱本link瞭解型材

討論這link也能有所幫助。我希望它有幫助和快樂的編碼!歡迎來到stackoverflow社區!

+0

你幫了我很多但問題:videosize與質量有關係?怎麼樣? – sarah

+0

更高的尺寸意味着高像素密度,這意味着細節可以更好地顯示。如果這是複雜的小圖像清​​晰或大圖像?由於視頻是動態圖片,因此情況也是如此。祝你好運! –

+0

如果有幫助,請標記爲答案!謝謝 –