2010-08-05 2 views
2

Nexus One (예)에서 카메라 응용 프로그램은 720x480에서 H.264 비디오를 캡처 할 수 있습니다 ("고화질"설정). 그러나 MediaRecorder API를 사용하면 항상 고정 된 프레임 크기 (320x240)로 캡처하는 것처럼 보입니다.캡처 한 비디오의 프레임 높이와 너비를 제어하는 ​​방법 : setVideoSize()가 작동하지 않음

프레임 크기를 제어하기 위해 setVideoSize() 메서드가 필요하지만 (Froyo 2.2 Android SDK 사용) 효과가없는 것으로 보입니다.

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
recorder.setOutputFile(PATH_TO_FILE); 
recorder.setVideoSize(720,480); 
recorder.setPreviewDisplay(holder.getSurface()); 
recorder.prepare(); 

Discussions on the android developers list 이것은 오랜 논쟁 거리임을 나타냅니다. 누구나 프레임 크기를 제어 할 수있는 방법을 조언하거나 현재 API를 사용하여 프레임 크기를 제어하는 ​​방법에 대해 조언 할 수 있습니까?

답변

1

recorder.setVideoSize는 깨진 API로 보입니다. 작동하지 않는 것 같습니다. 그러나 비디오 출력 형식, 인코더, 크기 및 프레임 속도를 설정할 "고품질"사전 설정을 사용할 수 있습니다. 이 설정은 하드웨어 가속화가 원인이라고 생각하고 있습니까? 내 넥서스 원이에

는 일 :

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
recorder.setOutputFile(PATH_TO_FILE); 
recorder.setPreviewDisplay(holder.getSurface()); 
recorder.prepare(); 
+0

2.2 그 순간에만 QUALITY_HIGH 실제로 QUALITY_LOW –

+0

, setProfile (이 있다는 안됐다가) 것입니다. setVideoSize() 함수가 작동하지 않는다고 말할 수 없도록 같은 setVideoSize() 함수를 호출하면됩니다. – artsylar

+1

나는 setProfile()이 올바른 순서로 당신에게 해줄 것이라고 생각한다. – dzeikei

5

순서는 중요합니다. setVideoEncoder 전에 호출 setVideoSize을 시도해보십시오

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setVideoSize(720,480); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
recorder.setOutputFile(PATH_TO_FILE); 
recorder.setPreviewDisplay(holder.getSurface()); 
recorder.prepare(); 
+2

이것이 맞다.하지만 setvideoize는 setoutput 형식 이후이지만 setvideoencoder – zviadm

-1

이 기능을 - recorder.setProfile이 - 안드로이드 V부터 유효

관련 문제