Ошибка E/MediaRecorder: start called in an invalid state: 4

Я пытаюсь записать видео с помощью Camera2 и MediaRecorder. Когда вызывается метод mediaRecorder.start(); я получаю ошибку:

2020-09-21 15:29:40.161 29957-29957/? E/xample.coverme: Unknown bits set in runtime_flags: 0x8000
2020-09-21 15:29:40.877 29957-29989/com.example.covermex E/[Gralloc-ERROR]: sanitize_formats:482 Format [id:0x4] which doesn't support afbc should not have bpp defined
2020-09-21 15:29:41.152 29957-29957/com.example.covermex E/RecyclerView: No adapter attached; skipping layout
2020-09-21 15:29:44.785 29957-29957/com.example.covermex E/MediaRecorder: start called in an invalid state: 4
2020-09-21 15:29:44.786 29957-29957/com.example.covermex E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.covermex, PID: 29957
    java.lang.IllegalStateException
        at android.media.MediaRecorder._start(Native Method)
        at android.media.MediaRecorder.start(MediaRecorder.java:1405)

Настройки mediaRecorder:

private void setupMediaRecorder()
{
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);    
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setOutputFile(videoFileName);
    mediaRecorder.setVideoEncodingBitRate(1000000);
    mediaRecorder.setVideoFrameRate(30);
    mediaRecorder.setVideoSize(videoSize.getWidth(), videoSize.getWidth());
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mediaRecorder.setOrientationHint(totalRotation);
    mediaRecorder.prepare();
}

Когда пытаюсь добавить audioSource:

mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

Получаю такую ошибку

2020-09-21 15:43:55.078 31902-31902/? E/xample.coverme: Unknown bits set in runtime_flags: 0x8000
2020-09-21 15:43:55.913 31902-31938/com.example.covermex E/[Gralloc-ERROR]: sanitize_formats:482 Format [id:0x4] which doesn't support afbc should not have bpp defined
2020-09-21 15:43:58.434 31902-31902/com.example.covermex E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.covermex, PID: 31902
    java.lang.RuntimeException: setAudioSource failed.

Ещё кусок кода:

private void checkWriteStoragePermission() {
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED)
    {
        try
        {
            createVideoFileName();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        if (isRecording) {
            startRecord();
            mediaRecorder.start();
        }

        Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
    }
    else
    {
        if(shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE))
            Toast.makeText(this, "ERROR", Toast.LENGTH_SHORT).show();

        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION_RESULT);
    }
}

private void startRecord()
{
    setupMediaRecorder();
}

Кто-нибудь сталкивался с таким поведением?


Ответы (0 шт):