5

当 Android 设备不支持强制音频编码器时,您会得到:(X=编码器的数字索引)

E/MediaProfiles(4048):找不到给定的音频编码器 X A/AudioSource(4048):frameworks/base/media/libstagefright/AudioSource.cpp:58 CHECK(channels == 1 || channels == 2) 失败。A/libc(4048): 0xdeadbaad (code=1) 处的致命信号 11 (SIGSEGV) 在本机代码中。没有例外的反应。应用程序只是强制关闭。

如果实际支持 AAC AMR-NB 和 AMR-WB,有什么方法可以查询 Android >3.x 设备?文档(http://developer.android.com/guide/appendix/media-formats.html)说这些是核心媒体格式,因此始终受支持。一些实际和普通的手机(主要品牌)没有。

MediaCodec.createByCodecName(String name)Get supported Codec for Android device 仅适用于 API16=Android 4.1 但有问题的设备是 4.0.x 。它也没有列出 AMR-NB 和 AAC。

4

1 回答 1

2

在您的 Android 设备上,媒体配置文件/功能存储在名为 media_profiles.xml(在 ICS/4.0 上)的配置文件中。

通常,此文件位于设备上的 /etc 文件夹中。

所以你能做的是

  1. 将您的设备连接到 pc 并使用 adb pull 命令拉取 /etc/media_profiles.xml 文件
  2. 检查 AudioEncoderCap 属性。广告中的每个功能都将有多个条目。例如:

    AudioEncoderCap name="aac" enabled="true" minBitRate="8192" maxBitRate="96000" minSampleRate="8000" maxSampleRate="16000" minChannels="1" maxChannels="1"

  3. 如果如上所述将“启用”标志设置为“真”,则设备应支持该功能。如果不支持,“启用”标志将设置为“假”。

AFAIK,jb(4.1)上引入的媒体编解码器框架读取此/类似配置文件以将设备功能公开给应用程序层。

希望这可以帮助。

谢谢!

于 2012-11-16T09:11:33.617 回答