android中视频质量的主要问题?

android中视频质量的主要问题?,android,android-layout,Android,Android Layout,在应用程序中,我使用surface view摄像头捕获视频,但视频输出的质量与实际摄像头输出相比非常差,我使用的是基本的android 2.1版本,我不知道我在哪里犯了错误,请任何人帮助我以更好的质量捕获视频 我不知道我在哪里犯了错误,我为相机设置了以下属性 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA

在应用程序中,我使用surface view摄像头捕获视频,但视频输出的质量与实际摄像头输出相比非常差,我使用的是基本的android 2.1版本,我不知道我在哪里犯了错误,请任何人帮助我以更好的质量捕获视频

我不知道我在哪里犯了错误,我为相机设置了以下属性

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

谢谢

通过设置videEncodingBitRate、AudioEncodingBitRate、AudioSamplingRate等,我终于找到了在android 2.1中录制高质量视频的代码。使用此方法,您可以设置视频的属性,以提供高质量的视频

有关设置高质量和低质量参数的信息,请参阅本页

我在android 2.1的基本版本中使用的生成高质量视频的代码如下所示,`recorder=new MediaRecorder(); 方法[]方法=recorder.getClass().getMethods()

`

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setVideoFrameRate(24);
    recorder.setVideoSize(720, 480);

    for (Method method: methods){
    try{
        if (method.getName().equals("setAudioChannels")){
                method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1));
        } 
        else if(method.getName().equals("setAudioEncodingBitRate")){
                method.invoke(recorder,12200);
            }
        else if(method.getName().equals("setVideoEncodingBitRate")){
            method.invoke(recorder, 3000000);
        }
        else if(method.getName().equals("setAudioSamplingRate")){
            method.invoke(recorder,8000);
        }
        else if(method.getName().equals("setVideoFrameRate")){
            method.invoke(recorder,24);
        }
    }catch (IllegalArgumentException e) {

        e.printStackTrace();
    } catch (IllegalAccessException e) {

        e.printStackTrace();
    } catch (InvocationTargetException e) {

        e.printStackTrace();
    }
    }

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);