在Android上检测支持的音频编码器以防止崩溃“找不到给定的音频编码器2”

在Android上检测支持的音频编码器以防止崩溃“找不到给定的音频编码器2”,第1张

概述当 Android设备不支持强制性音频编码器时,您会得到: (X =编码器的数字索引) E / MediaProfiles(4048):找不到给定的音频编码器X.  A / AudioSource(4048):frameworks / base / media / libstagefright / AudioSource.cpp:58 CHECK(channels == 1 || channels 当 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处的致命信号11(SIGSEGV)(代码= 1)
在本机代码中.没有例外可以做出反应.应用程序只是强制关闭.

有没有办法查询AndroID> 3.x设备if
AAC
AMR-NB和
AMR-WB
实际上是支持吗?
文档(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.

解决方法 在AndroID设备上,媒体配置文件/功能存储在名为media_profiles.xml的配置文件中(在ICS / 4.0上).

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

所以你能做的就是

>将设备连接到pc并使用adb pull命令拉取/etc/media_profiles.xml文件
>检查AudioEncoderCap属性.广告的每个可用性将有多个条目.
对于前:

AudioEncoderCap name =“aac”enabled =“true”
        minBitRate =“8192”maxBitRate =“96000”
        minSampleRate =“8000”maxSampleRate =“16000”
        minChannels =“1”maxChannels =“1”
>如果’enabled’标志如上所述设置为“true”,则设备应支持该功能.如果不支持,则“enabled”标志将设置为“false”.

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

希望这可以帮助.

谢谢!

总结

以上是内存溢出为你收集整理的在Android上检测支持的音频编码器以防止崩溃“找不到给定的音频编码器2”全部内容,希望文章能够帮你解决在Android上检测支持的音频编码器以防止崩溃“找不到给定的音频编码器2”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1126763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存