2012-08-03 8 views

Antwort

4

Gibt es eine Möglichkeit, ein Android-Gerät zu fragen, welche Audio- und Video-Codecs es für die Codierung unterstützt?

Ich wünschte wirklich, es gäbe, aber es gibt nicht, zumindest durch ICS.

Jelly Bean bietet eine MediaCodec Klasse. Es hat zwar keine "Gib mir eine Liste der unterstützten Codecs", aber es hat createEncoderByType(), wo Sie einen MIME-Typ übergeben. Vermutlich wird das eine RuntimeException werfen oder null zurückgeben, wenn der gewünschte MIME-Typ nicht unterstützt wird. Und ich kann das nicht versprechen, nur weil MediaCodec meldet, dass ein Encoder verfügbar ist, von dem garantiert wird, dass er beispielsweise von MediaRecorder arbeitet.

+1

Und MediaCodec hat einen anderen Satz von Codec-Konstanten von MediaRecorder. –

6

, die für Sie interessant sein könnten:

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

es gefunden here. Wie Sie sehen können, erhalten Sie die Anzahl der installierten Codecs mit MediaCodecList.getCodecCount();. Mit MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i); erhalten Sie Informationen über einen bestimmten Codec aus der Liste. zum Beispiel sagt Ihnen Titel/Name des Codec.