2011-08-02 3 views
0
내가 높은 품질로 비디오를 녹화하려고

, 난,미디어 레코더를 사용하여 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

나는 안드로이드 2.1 미디어 레코더를 사용하여 비디오를 캡처 할 수있는 방법이 필요하다.

누군가가 나를 도와주는 수단을 알고 있다면.

감사합니다.

+0

는 말할 힘들었다하지만 해상도 캡처하려는 비디오에서 네? –

+0

720,480 해상도 .. – Karthi

답변

2

마지막으로 나는 videEncodingBitRate, AudioEncodingBitRate, AudioSamplingRate ... 등을 설정하여 안드로이드 2.1에 고화질 비디오를 기록하는 코드를 발견했습니다. 이 방법을 사용하면 고화질 비디오를 제공하려는 비디오의 속성을 설정할 수 있습니다.

이 내용을 높은 품질과 낮은 품질 파라미터 설정 용

,

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

제가 높은 품질의 비디오를 생성하기 위해 2.1 로이드베이스 버전의 사용되는 코드는 다음과 같다`레코더 = 새로운 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); 

`

관련 문제