获得Android设备支持的编解码器
有没有办法向Android设备询问它支持编码的音频和视频编解码器?
我发现设备不支持http://developer.android.com/guide/appendix/media-formats.html中强制列出的一些编解码器,似乎还有支持未在此列出的附加编解码器的设备。
这对你来说可能很有趣:
private static MediaCodecInfo selectCodec(String mimeType) {
int numCodecs = MediaCodecList.getCodecCount();
for (int i = 0; i < numCodecs; i++) {
MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
if (!codecInfo.isEncoder()) {
continue;
}
String[] types = codecInfo.getSupportedTypes();
for (int j = 0; j < types.length; j++) {
if (types[j].equalsIgnoreCase(mimeType)) {
return codecInfo;
}
}
}
return null;
}
在这里找到它。 正如你所看到的,你可以通过MediaCodecList.getCodecCount();
获得安装的编解码器的数量MediaCodecList.getCodecCount();
。 使用MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
您会从列表中获取有关特定编解码器的信息。 codecInfo.getName()
例如告诉你编解码器的标题/名称。
有没有办法向Android设备询问它支持编码的音频和视频编解码器?
我真的希望有,但至少通过ICS没有。
Jelly Bean提供了一个MediaCodec
类。 虽然它没有“给我一个支持的编解码器列表”,但它的确有createEncoderByType()
,它传递的是MIME类型。 据推测,如果您不想支持所需的MIME类型,则会抛出RuntimeException
或返回null
。 我不能承诺,仅仅因为MediaCodec
报告说有一个编码器可以保证可以工作,比如MediaRecorder
。
上一篇: Get supported Codec for Android device
下一篇: Is it possible to get the resolution of a video in Android?