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);
    }

У кого-нибудь есть обходной путь к этой проблеме?

0 ответов

Другие вопросы по тегам