2012-08-03 187 views

回答

4

有沒有辦法問一個Android設備它支持哪些音頻和視頻編碼解碼器?

我真的希望有,但至少沒有通過ICS。

果凍豆提供MediaCodec類。雖然它沒有「給我一個支持的編解碼器列表」,但它確實有createEncoderByType(),您傳遞的是MIME類型。據推測,如果您所需的MIME類型不受支持,則會拋出RuntimeException或返回null。我不能保證只是因爲MediaCodec報告有一個編碼器可以使用,例如MediaRecorder

+1

而MediaCodec有一組來自MediaRecorder的編解碼器常量。 – 2012-09-24 07:23:15

6

這可能是對你有意思:

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

發現here。正如您所看到的,您可以通過MediaCodecList.getCodecCount();獲得已安裝的編解碼器數量。使用MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);您可以從列表中獲得有關特定編解碼器的信息。例如會告訴您編解碼器的標題/名稱。