我想将帧速率限制为 5-10 fps。 编码帧通过网络套接字连接发送,我的目标是将带宽限制为 1Mbps,同时具有良好的质量以获得更大的分辨率。
我目前的尝试是:
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)
我厌倦了在格式和表面上设置帧速率,但它仍然没有限制它。基于此讨论MediaCodec KEY_FRAME_RATE 似乎被忽略
带宽确实遵循格式中设置的比特率,但不遵循帧速率,因此质量很差。
那么如何降低帧率呢?最好以支持旧版本 Android 的方式。