Ошибка 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();
}
Кто-нибудь сталкивался с таким поведением?