Atraso na preparação do gravador de mídia no android
Estou gravando vários vídeos pequenos em 10 segundos. Preciso preparar e iniciar o gravador de mídia várias vezes antes de criar qualquer vídeo. Devido a isso, há um intervalo de tempo de um ou dois segundos em cada vídeo. Existe alguma maneira de evitar esse atraso na preparação do gravador de mídia como o Instagram?
public boolean startRecording() {
startCamera();
camera.unlock();
int rotation = 0;
cameraInfo = new CameraInfo();
Camera.getCameraInfo(cameraId, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
rotation = 270;
} else {
rotation = 90;
}
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setOrientationHint(rotation);
mMediaRecorder.setCamera(camera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncodingBitRate(1500000);
mMediaRecorder.setVideoSize(640, 480);
File f = new File(cVideoFilePath);
int countNames = 1;
String[] fileNameList = null;
fileNameList = f.list();
for (int i = 0; i < fileNameList.length; i++) {
if (fileNameList[i].contains("TapVid")) {
countNames++;
}
}
updatedFileNumber = countNames;
prRecordedFile = new File(cVideoFilePath + "Vid" + updatedFileNumber
+ ".mp4");
mMediaRecorder.setOutputFile(prRecordedFile.getPath());
mMediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
try {
mMediaRecorder.prepare();
mMediaRecorder.start();
} catch (Exception e) {
e.printStackTrace();
releaseMediaRecorder();
return false;
}
return true;
}