3

Android从4.1(API level 16)开始提供了'MediaCodec'等一系列API,可以让用户获取系统的编解码信息。

但是,我的问题是如何在 4.0 上获取编解码器列表。

顺便说一句,我检查了 4.1 的源代码,API 实现通过解析文件获取信息:system/etc/media_codec.xml。但是在 4.0 上,没有这样的文件。

4

2 回答 2

3

MediaCodec在 API 16 中添加。在此之前,可用组件在实现和供应商提供的 omx 库中进行硬编码。并且在 java 方面没有 api 来做这种事情。在 C++ 中,您可以通过在 adb shell 中调用stagefright程序(使用-l或)来惊吓并获取该信息。有关较低层如何检查可用编解码器的信息,-p请参阅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

更多信息:如何创建 stagefright 插件这里有一些关于如何在两个版本中完成编解码器交易的背景。

于 2013-11-15T06:07:39.877 回答
0

这不是技术上最令人兴奋的解决方案,但您可以简单地硬编码Android 文档中Core Media Formats 表中的信息。

在某些情况下,设备的某些编解码器超出该版本所保证的编解码器,这种方法可能会丢失,但这对于您的目的可能是可以接受的。

于 2013-11-15T04:56:09.773 回答