MediaCodec的使用没什么好说的,开发者官网的介绍颇为详尽,今天我们进入源码,从初始化流程说起,深入探寻一下MediaCodec的秘密。
获取MediaCodecList的流程
想要初始化一个MediaCodec实例,总要先拿到当前系统所支持的codec列表,也就是MediaCodecList,再从其中得到我们需要的具体codec。
codec列表可以在系统的vendor/etc目录下找到,位于media_codec.xml等几个xml文件中,在出厂时就已经配好了。所以如果只是想要快速查看,可以不用写代码,直接找个手机adb进去看看。
MediaCodecList的本质是一个MediaCodecInfo数组,其构建流程如下图所示

有人说了,假如我已经知道自己要什么类型的MediaCodec,那直接创建对应的实例,然后调用MediaCodec.getCodecInfo不行吗,何必要通过MediaCodecList呢,岂不啰嗦?我劝你最好不要这么干,在某些机型上,MediaCodec.getCodecInfo会引发crash,相比之下,MediaCodecList是更靠谱的选择。
根据媒体格式创建对应的MediaCodec
我们先岔开话题,假设现在的场景是使用MediaExtractor来解析输入文件,看看
本文深入探讨Android MediaCodec的初始化流程,从获取MediaCodecList、根据媒体格式创建MediaCodec到Configure过程,揭示了从MediaExtractor解析媒体格式到MediaCodec配置的内部细节,并以高通平台为例展示了具体的实现步骤。同时提醒开发者避免直接使用MediaCodec.getCodecInfo以防止可能的崩溃,推荐使用MediaCodecList确保稳定性。
订阅专栏 解锁全文
初始化流程&spm=1001.2101.3001.5002&articleId=72492107&d=1&t=3&u=f8d80207fa3141a9bd7f94c34720eb23)
1554

被折叠的 条评论
为什么被折叠?



