2014-01-11 4 views
1

안녕하세요 stackoverflow 친구들. 나는 android에서 새로 왔으며 비디오 캡처를위한 코드를 작성했습니다. 하지만 이것은 휴대 전화의 품질이 낮습니다 (특히 안드로이드 버전 4.2는 매우 낮은 품질 임). 높은 품질의 비디오 캡처가 필요하지만 다른 속성을 알지 못합니다. 어떻게하면 고품질의 비디오 레코더를 가질 수 있습니까?어떻게하면 안드로이드에서 고품질의 비디오 레코더와 오디오 레코더를 사용할 수 있습니까?

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

그리고 도움이 되었다면 답을 표시해주세요! 감사 –