Запись с передней камеры с использованием MediaRecorder не работает гладко - PullRequest
0 голосов
/ 15 февраля 2019

У меня смартфон Huawei P9 Plus под управлением Android 7.0.Я использую MediaRecorder для записи передней камеры.Это 8-мегапиксельная камера.Я использую следующие настройки (я думаю, что это самая важная часть, я не публикую весь класс, потому что в нем слишком много строк кода):

mMediaRecorder = new MediaRecorder();
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mMediaRecorder.setOutputFile(videoFile.getAbsolutePath());
mMediaRecorder.setVideoEncodingBitRate(8000000);
mMediaRecorder.setVideoFrameRate(30)
mMediaRecorder.setVideoSize(1024 , 1920)
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaSurface = MediaCodec.createPersistentInputSurface();
mMediaRecorder.setInputSurface(mMediaSurface);
mMediaRecorder.prepare();

С этими настройками это работает, ноиногда видео немного дергается.Странно также то, что с размером видео 1024 x 1920 он работает, но когда я установил 1080 x 1920, он больше не работает (ошибки нет, но видео полностью повреждено).Это почему?В поддерживаемых разрешениях, которые я получил по характеристикам передней камеры, указано 1080 x 1920, но не 1024 x 1920.

Все остальные настройки в порядке?setVideoEncodingBitRate нормально для 8-мегапиксельной камеры?

Я также пытался использовать данный профиль следующим образом:

mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFile(videoFile.getAbsolutePath());        
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_1080P));
mMediaRecorder.setVideoFrameRate(30)
mMediaSurface = MediaCodec.createPersistentInputSurface();
mMediaRecorder.setInputSurface(mMediaSurface);
mMediaRecorder.prepare();

Когда я запускаю его таким образом, я получаю ошибкукогда я пытаюсь остановить MediaRecorder (остановка не удалась: -1007), возможно, потому, что запись видео не удалась.Зачем?Я сделал ошибку?

1 Ответ

0 голосов
/ 15 февраля 2019

Когда я запускаю его таким образом, я получаю сообщение об ошибке при попытке остановить MediaRecorder (остановка не удалась: -1007), возможно, из-за того, что запись видео не удалась.Зачем?Я сделал ошибку

Вы, вероятно, правы.Попробуйте проверить или добавить свойство (например, Boolean), чтобы определить, запущен ли рекордер.В этом случае вы не сможете вызвать стоп, если он еще не запущен.

...