2011-07-26 17 views
0

私は、ビデオをキャプチャするために表面ビューカメラを使用しますが、実際のカメラ出力に比べてビデオ出力の品質が非常に悪いです、私は基本的なアンドロイド2.1バージョンを使用しています。より良い品質でビデオをキャプチャするのに役立ちます。私はミスをしたところ、私が知っている `tのアンドロイドのビデオ品質の主な問題?

、私は

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

おかげで

答えて

1

最終的に私はvideEncodingBitRateを設定することで、アンドロイド2.1で高品質のビデオを記録するためのコードを発見したカメラの次のプロパティを設定しました、AudioEncodingBitRate、AudioSamplingRateなど。この方法を使用すると、高品質のビデオを提供したい場合でも、ビデオのプロパティを設定できます。

このページを参照し、高品質、低品質パラメータを設定するため

http://www.andgps.com/20110410/camcorderprofile-predefined-camcorder-profile-settings-for-camcorder-applications

iは高品質のビデオを生成するために2.1のAndroidベースのバージョンで使用されるコードは、以下に示されている `レコーダ=新しい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); 

`