Android提供了一系列API,例如“MediaCodec”,可以让用户从4.1(API级别16)获取系统的编解码信息。
但是,我的问题是如何在4.0上获得编解码器列表。
顺便说一句,我已经检查了4.1的源代码,API实现通过解析文件来获取信息:system / etc / media_codec.xml。但是在4.0上,没有这样的文件。答案 0 :(得分:2)
MediaCodec
。在此之前,可用的组件在实现和供应商提供的omx库中进行了硬编码。并且在java方面没有api做这类事情。从C ++开始,您可以通过调用adb shell中的stagefright
程序(-l
或-p
)来获取stagefright并获取该信息。有关较低层如何检查可用编解码器的信息,请参阅http://source.android.com/devices/media.html。在以前的版本中,xml文件中现在的信息位于c / c ++源代码中。 stagefright
程序(http://androidxref.com/4.0.4/xref/frameworks/base/cmds/stagefright/stagefright.cpp)的来源是一个很好的起点,可以查看如何获取组件列表。查看if (listComponents)
函数中的main
块。
更多信息:How to create a stagefright plugin这里有一些关于如何在两个版本中完成编解码器处理-y-o的背景知识。
答案 1 :(得分:0)
这不是技术上最令人兴奋的解决方案,但您可以简单地对Android文档中的Core Media Formats table中的信息进行硬编码。
在某些情况下,某个设备的某些编解码器超出了该版本所保证的编程范围,但此方法可能会错过,但这可能是您可以接受的。