Comment obtenir le bitrate de fichier audio dans le cacao
-
21-08-2019 - |
Question
Je dois obtenir des informations bitrate des fichiers audio, pour une fonction de AudioFileGetProperty raison avec une constante kAudioFilePropertyBitRate retourne toujours 0 pour moi. La même chose avec kAudioFilePropertyInfoDictionary, le dictionnaire résultant ne marche pas contenir d'informations bitrate. Je voudrais essayer de manualy obtenir ce à partir des données brutes en cas de mp3, mais je dois prendre en charge différents formats de fichiers tels que m4a et d'autres. Est-il une autre façon de le faire?
La solution
Si vous avez affaire à un fichier, vous pouvez toujours essayer d'utiliser l'API de métadonnées Spotlight. Par exemple, supposant que vous avez le chemin de votre fichier audio comme un NSString ou CFStringRef appelé « path »:
MDItemRef item = MDItemCreate( kCFAllocatorDefault, path );
CFNumberRef audioBitrate = MDItemCopyAttribute( item, kMDItemAudioBitrate );
CFNumberRef totalBitrate = MDItemCopyAttribute( item, kMDItemTotalBitrate );
CFRelease( item );
Il 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 uniquement définie dans OS X 10.5. Si vous utilisez sur 10.4 ou plus tôt, votre code continue à fonctionner, mais le cadre AudioFile ne connaîtra pas la propriété bitrate du tout, et serait donc probablement de retour à zéro.