уменьшить частоту кадров энкодера
Я пытаюсь ограничить частоту кадров до 5-10 кадров в секунду. Закодированный кадр отправляется через соединение через веб-сокет, и моя цель - ограничить пропускную способность до 1 Мбит / с, имея при этом хорошее качество для большего разрешения.
моя текущая попытка:
val format =
MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_VP8, size.width, size.height)
format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, 1000000);
format.setInteger(MediaFormat.KEY_BITRATE_MODE, MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR_FD);
format.setInteger(MediaFormat.KEY_FRAME_RATE, 1);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
format.setInteger(MediaFormat.KEY_MAX_FPS_TO_ENCODER, 1);
encoderInput = mEncoder!!.createInputSurface()
encoderInput.setFrameRate(1f,Surface.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,Surface.CHANGE_FRAME_RATE_ALWAYS)
Надоело и ставить частоту кадров в формате и на поверхности но все равно не ограничивает. на основе этого обсуждения MediaCodecKEY_FRAME_RATE кажется игнорируемым
Полоса пропускания соответствует битрейту, установленному в формате, но не частоте кадров, поэтому качество плохое.
так как уменьшить частоту кадров? желательно таким образом, чтобы поддерживать более старую версию Android.