在使用MediaCodec Surface+Camera2的方式进行硬编码时,由于没有对编码裸数据进行处理,通常编码的帧率会基于Camera的帧率,有时候会出现帧率超预期的情况。
可以通过以下方法进行编码帧率控制:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
mMediaFormat.setFloat(MediaFormat.KEY_MAX_FPS_TO_ENCODER,
mCodecInfo.getFrameRate());
}