2011-08-02 65 views
0

我試圖記錄高品質的視頻,我用記錄媒體記錄器類的示例代碼如下所示的視頻,需要使用Media recorder在Android 2.1中錄製高品質視頻的代碼?

recorder = new MediaRecorder(); 

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

但質量不如使用默認的攝像頭拍攝的視頻爲好。 因爲版本是2.1,我甚至不能在這裏設置Camcorderprofile。該視頻看起來很差,質量有些扭曲。

樣品視頻...... http://videoxplode.com/player.php?id=808490

我需要一種方法來捕獲使用介質記錄在Android 2.1的視頻。

如果有人知道意味着幫助我。

謝謝。

+0

從視頻中這是很難說,但你想捕捉什麼分辨率對不起? –

+0

720,480分辨率.. – Karthi

回答

2

最後,我發現了通過設置videEncodingBitRate,AudioEncodingBitRate,AudioSamplingRate等等來在android 2.1中記錄高質量視頻的代碼。使用這種方法,您可以爲視頻設置任何想要提供高質量視頻的屬性。

爲了設定高的品質和低的質量參數是指當前頁,

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

我用鹼Android 2.1版本,以產生高品質的視頻中使用的代碼如下所示,`錄音機=新MediaRecorder() ; Method [] methods = 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); 

`