Dav*_*vid 5 java encoding android mediacodec
我正在使用MediaCodec来自相机的视频编码:
MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height);
format.setInteger(MediaFormat.KEY_BIT_RATE, 250000);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
format.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
_mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
Run Code Online (Sandbox Code Playgroud)
我发现根据我给出的分辨率,有一些最小有效比特率要设置.如果我在该数量下设置比特率,则完全被忽略.如果我将比特率设置为高于此不可见阈值,则按预期工作.我想要做的是查询我可以KEY_BIT_RATE为任何给定分辨率设置的最小比特率.当我设置一个没有任何影响的比特率时,不会抛出任何错误或任何错误.
最低比特率是谷歌对供应商需要支持的分辨率要求的一部分: https: //source.android.com/compatibility/android-cdd.pdf。看5.2
对于其他分辨率,行为未定义。文档中未列出的解决方案还可能会引入其他意外问题,因为它们未包含在 Google 认证测试 (CTS) 中,并且无法保证设备供应商能够使其正常工作
Android 中没有 API 可以检查最小支持的比特率以获得准确的分辨率