2012-08-03 11 views

Respuesta

4

¿Hay alguna manera de preguntarle a un dispositivo Android qué códecs de audio y video admite para la codificación?

Realmente me gustaría que hubiera, pero no lo hay, al menos a través de ICS.

Jelly Bean ofrece una clase MediaCodec. Si bien no tiene un "dame una lista de códecs admitidos", sí tiene createEncoderByType(), donde pasas en un tipo MIME. Presumiblemente, lanzará un RuntimeException o devolverá null si su tipo MIME deseado no es compatible. Y no puedo prometer eso solo porque MediaCodec informa que hay un codificador disponible que está garantizado para funcionar, digamos, MediaRecorder.

+1

Y MediaCodec tiene un conjunto diferente de códec-constantes de MediaRecorder. –

6

que podrían ser de su interés:

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; 
} 

encontrado que es here. Como puede ver, obtiene el número de códecs instalados con MediaCodecList.getCodecCount();. Con MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i); obtienes información sobre un códec específico fuera de la lista. , por ejemplo, le dice el título/nombre del códec.

Cuestiones relacionadas