【问题标题】:how can I have a high quality video recorder and audio recorder on android?如何在 android 上拥有高质量的录像机和录音机?
【发布时间】:2014-01-30 13:12:44
【问题描述】:

你好 stackoverflow 的朋友们。我是 android 的新手,并且有以下代码用于捕获视频。 但这在手机上的质量很低(特别是在 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();
           }


    }

我还有一个录音机,它的质量也很差。我也为高质量的 voide 记录器做了什么?

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) 
            {
            }

        }

【问题讨论】:

    标签: android video camera video-capture audio-capture


    【解决方案1】:

    stackoverflow 上有很好的讨论 请参考此link 了解个人资料

    这个link 也很有帮助。我希望它有所帮助并快乐编码!欢迎来到 stackoverflow 社区!

    【讨论】:

    • 你帮了我很多。但是一个问题:视频大小与质量有关系吗?如何?
    • 更大的尺寸意味着更高的像素密度,这意味着可以更好地显示细节。如果那很复杂是小图像清晰还是大图像?由于视频是运动图像,因此情况相同。祝你好运!
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    相关资源
    最近更新 更多