Android Media Recorder Delay

I record some small videos in 10 seconds. I need to prepare and run the media recorder again and again before creating any video. In this regard, in each video there is a time delay of one or two seconds. Is there a way to avoid this delay when preparing a media recorder such as 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;
}
+2
source share
1 answer

Therefore, Instagram also suffers from MediaRecorder's delay. You can tell when you make quick taps. The progress bar resets. This is only after you hold the record button for longer than a second, it actually captures something.

MediaRecorder. - API setPreviewCallbackWithBuffer. API , YUV, . MediaCodec .

OEM- MediaCodec , , 4.3. , MediaCodec, , , , YUV, . AV.

ffmpeg - , ffmpeg. VP8 + vorbis - , .

+4

All Articles