无法控制MediaCodec输出关键帧解决方案

在做视频录制时,发现使用MediaCodec做硬解码时,即使设置了MediaFormat的MediaFormat.KEY_I_FRAME_INTERVAL属性也无法控制输出Buffer中关键帧的输出数量。
后来发现原来是真正的原因是在于视频的输入源,如果是通过Camera的PreviewCallback的方式来获取视频数据再喂给MediaCodec的方式是无法控制输出关键帧的数量的。
想要控制输出输出关键帧数量就必须通过调用MediaCodec.createInputSurface()方法获取输入Surface,再通过Opengl渲染后喂给MediaCodec才能真正控制关键帧的数量(至于为什么会这样我也没搞明白,希望有明白的能指教一下)

判断输出数据是否为关键帧的方法:
boolean keyFrame = (bufferInfo.flags & MediaCodec.BUFFER_FLAG_KEY_FRAME) != 0;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容