深入理解Android MediaCodec(一)初始化流程

本文深入探讨Android MediaCodec的初始化流程,从获取MediaCodecList、根据媒体格式创建MediaCodec到Configure过程,揭示了从MediaExtractor解析媒体格式到MediaCodec配置的内部细节,并以高通平台为例展示了具体的实现步骤。同时提醒开发者避免直接使用MediaCodec.getCodecInfo以防止可能的崩溃,推荐使用MediaCodecList确保稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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来解析输入文件,看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhanghui_cuc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值