Я пытаюсь настроить пользовательский экран камеры, но по какой-то причине следующий код, похоже, не работает. Я закончил с RuntimeException
, вызванный ошибкой, которая говорит: setAudioSource called in an invalid state(4)
.Ошибка MediaRecorder: setAudioSource в недействительном состоянии (4)
Ниже приведен код в вопросе:
Preview.getRecorderInstance().setVideoSource(MediaRecorder.VideoSource.CAMERA);
Preview.getRecorderInstance().setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
Preview.getRecorderInstance().setAudioSource(MediaRecorder.AudioSource.MIC);
Preview.getRecorderInstance().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Preview.getRecorderInstance().setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
Preview.getRecorderInstance().setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/test" + System.currentTimeMillis() + ".mp4"
);
Preview.getRecorderInstance().prepare();
Preview.getRecorderInstance().start();
Preview.getRecorderInstance()
получает одноэлементный медиа-рекордер, привязанный к Preview
классу (который является подклассом SurfaceView
предназначен для отображения предварительного просмотра камеры).
Мои права: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Я бы признателен за любую помощь в этом, так как я не получаю нигде в этой работе, и я посмотрел на подобные вопросы на StackOverflow. Я не смог решить проблему после прочтения ответов.
Спасибо за помощь! Это избавляет от этой ошибки, но, с другой стороны, теперь я получаю сообщение об ошибке «start failed: -19'. Проблема в том, что я начинаю записывать рекордер, и я не могу понять, почему. – adilipan
@adilipan: Другие сообщения SO указывают на то, что эта ошибка может быть связана с размером видео в соответствии с параметром 'MediaRecorder.setVideoSize()'. Вы называете этот метод в своем коде? –
Нет, я вообще не называю этот метод в своем коде. – adilipan