0
다음은 비디오 캡쳐에 도움이되는 코드입니다. 그러나 문제는 이미 프레임 속도를 초당 30 프레임으로 정의했기 때문에 프레임 속도입니다. 그것의 초당 다시 카메라 8 프레임의 출력을 제공 할 때 기록 전면 카메라를 사용하여 비디오는안드로이드 비디오 레코딩 응용 프로그램의 운율 - 초당 약 30 프레임이 필요합니다 ..!
mrec.setVideoFrameRate(30);
가
당신으로 작동하지 않을 수 있습니다 안드로이드 문서에 따라 최대 15 ~ 18 프레임
private void startRecording() {
if(mrec != null){
mrec.reset();
}
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mrec.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setVideoSize(640, 480);
mrec.setVideoEncodingBitRate(3000000);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// MPEG_4_SP
File dir = new File(SdCardPath + Directory);
if (!dir.exists()) {
if (dir.mkdir()) {
Log.v(STORAGE_SERVICE, "Created directory");
} else {
Log.v(STORAGE_SERVICE, "Failed to create Directory");
}
}
FullFilePath = SdCardPath + Directory + RecordFileName;
mrec.setOutputFile(FullFilePath);
mrec.setVideoFrameRate(30);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
try {
mrec.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mrec.start();
}
나는'mrec.setVideoFrameRate (30);와 동의한다. 작동하지 않았다. 그런 다음 surfaceCreated() 함수에 다음 코드를 추가했습니다. '매개 변수 p = mCamera.getParameters(); \t p.setPreviewFrameRate (29); \t p.setPreviewFpsRange (24000,29000); \t p.setPreviewSize (640, 480); \t mCamera.setParameters (p); ' 이것은 안드로이드 2.3.3에서 잘 작동하지만 위의 버전에서는 응용 프로그램이 충돌합니다. !! !! 어떤 생각 ?? –
진저 브레드 버전 이후에는 카메라에 액세스하는 방법이 다른 API를 통해 이루어집니다. 코드에서 내장 버전이 진저 브레드 이상인지 확인하고 별도의 메커니즘을 사용하여 카메라에 액세스해야합니다. 몇 가지 코드는 http://digitaldumptruck.jotabout.com/?p=797을 참조하십시오. –