MediaRecorder не использует указанное мной значение VideoEncodingBitRate
Я пытаюсь записать видео поверхности моего андроид устройства с помощью MediaRecorder. Однако я не могу повысить качество видео, увеличив битрейт с помощью setVideoEncodingBitRate().
Я перепробовал много значений, и качество видео не изменилось вообще. Я даже попробовал Integer.MAX_VALUE и рекомендованные значения битрейта видео, полученные с Youtube: https://support.google.com/youtube/answer/1722171?hl=en
Ничего не получалось!
Я нашел в документации setVideoEncodingBitRate (), что переданное значение может быть проигнорировано в некоторых случаях:"Устанавливает скорость кодирования видео для записи. Вызовите этот метод перед prepare(). Prepare() может выполнить дополнительные проверки для параметра, чтобы сделать убедитесь, что указанная битовая скорость применима, и иногда переданный bitRate будет обрезан внутри, чтобы обеспечить плавную запись видео в зависимости от возможностей платформы".
Я уверен, что мое оборудование может отображать лучшее разрешение, потому что обычные скриншоты имеют гораздо лучшее качество.
Это мой код в функции prepare ():
int width = mDisplayMetrics.widthPixels; //1920
int height = mDisplayMetrics.heightPixels; //1128
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoEncodingBitRate(8000000);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(width, height);
mMediaRecorder.setOutputFile(filePath);
try {
mMediaRecorder.prepare();
} catch (IOException ioEx) {
Log.e(DEBUG_TAG, "exception", ioEx);
}
У кого-нибудь есть обходной путь к этой проблеме?