2009-05-13 25 views
4

Je dois obtenir des informations de débit à partir de fichiers audio, pour une raison quelconque, la fonction AudioFileGetProperty avec la constante kAudioFilePropertyBitRate renvoie toujours 0 pour moi. La même chose avec kAudioFilePropertyInfoDictionary, le dictionnaire résultant ne contient pas d'informations de débit. J'essayerais de l'obtenir manuellement à partir de données brutes en cas de mp3, mais je dois supporter différents formats de fichiers tels que m4a et autres. Y a-t-un autre moyen de faire ça?Comment obtenir bitrate de fichier audio dans le cacao

Répondre

2

Si vous traitez un fichier, vous pouvez toujours essayer d'utiliser l'API de métadonnées Spotlight. Par exemple, en supposant que vous avez le chemin de votre fichier audio comme un NSString ou CFStringRef appelé « chemin »:

MDItemRef item = MDItemCreate(kCFAllocatorDefault, path); 
CFNumberRef audioBitrate = MDItemCopyAttribute(item, kMDItemAudioBitrate); 
CFNumberRef totalBitrate = MDItemCopyAttribute(item, kMDItemTotalBitrate); 
CFRelease(item); 

Ce n'est pas idéal, mais peut au moins vous fournir quelques informations de base pour expliquer pourquoi l'autre API ne fonctionne pas. La seule autre chose que je peux penser à: kAudioFilePropertyBitRate est seulement défini dans OS X 10.5. Si vous exécutez 10.4 ou une version antérieure, votre code s'exécutera toujours, mais l'infrastructure AudioFile ne connaîtra pas du tout la propriété bitrate et retournera probablement zéro.

+0

Merci pour info, l'api Spotlight était mon dernier recours, je voulais juste m'assurer qu'il n'y ait pas d'autres API audio capables de faire ça. Im fonctionnant sur 10.5 qui est également minspec – stackzerad