Android 12上的MediaCodec发生了以下变化:
从MediaCodecInfo类中删除了CODEC_FLAG_ENABLE_SAFEMODE标志,该标志允许启用安全模式。
增加了一个新常量:MediaCodecInfo.EncoderCapabilities.FRAME_RATE_THRESHOLD_MODE_CAPABILITY,用于支持指定编码器的适当帧率。
在MediaCodec.BufferInfo类中增加了两个新字段:presentationStartTimeUs和presentationEndTimeUs,用于表示输入缓冲区和输出缓冲区的播放时间戳。
代码示例:
// 获取编解码器信息 MediaCodecList codecList = new MediaCodecList(MediaCodecList.ALL_CODECS); MediaCodecInfo[] codecInfos = codecList.getCodecInfos();
// 循环遍历编解码器信息 for (MediaCodecInfo codecInfo : codecInfos) { // 获取编解码器支持的格式 String[] supportedTypes = codecInfo.getSupportedTypes(); for (String type : supportedTypes) { // 获取编解码器支持的相关参数 MediaCodecInfo.CodecCapabilities capabilities = codecInfo.getCapabilitiesForType(type); // 检查编码器是否支持FRAME_RATE_THRESHOLD_MODE_CAPABILITY if (capabilities.getEncoderCapabilities().isFrameRateThresholdModeSupported()) { // 支持该模式 Log.d(TAG, "Codec " + codecInfo.getName() + "supports FRAME_RATE_THRESHOLD_MODE_CAPABILITY"); } } }