获得支持的Android设备编解码器

Mar*_*hon 13 android codec mediarecorder

有没有办法向Android设备询问它支持的编码音频和视频编解码器?

我发现设备不支持http://developer.android.com/guide/appendix/media-formats.html中列出的某些编解码器, 并且似乎有设备支持其他未列出的编解码器.

Jon*_*son 9

这对你来说很有意思:

 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;
 }
Run Code Online (Sandbox Code Playgroud)

在这里找到它.如您所见,您可以获得已安装的编解码器的数量MediaCodecList.getCodecCount();.随MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);您可以从列表中获取有关特定编解码器的信息.codecInfo.getName()例如,告诉你编解码器的标题/名称.


Com*_*are 4

有没有办法询问 Android 设备支持哪些音频和视频编解码器进行编码?

我真的希望有,但没有,至少通过 ICS 没有。

Jelly Bean 提供MediaCodec课程。虽然它没有“给我支持的编解码器列表”,但它确实有createEncoderByType(),您可以在其中传递 MIME 类型。据推测,如果不支持您所需的 MIME 类型,则会抛出RuntimeException 或 返回。null我不能保证仅仅因为MediaCodec报告编码器可用就保证它可以在MediaRecorder.

  • MediaCodec 有一组与 MediaRecorder 不同的编解码器常量。 (2认同)