如何在可可中获取音频文件的比特率

时间:2009-05-13 20:57:22

标签: objective-c cocoa core-audio bitrate m4a

我需要从音频文件中获取比特率信息,出于某种原因,带有kAudioFilePropertyBitRate常量的AudioFileGetProperty函数总是为我返回0。与kAudioFilePropertyInfoDictionary相同,生成的字典不包含比特率信息。我想尝试在mp3的情况下从原始数据中获取此信息,但我需要支持不同的文件格式,如m4a和其他。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

如果您正在处理文件,则可以尝试使用Spotlight元数据API。例如,假设您将音频文件的路径作为NSString或CFStringRef称为“路径”:

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

这并不理想,但至少可以为您提供更多背景信息,以说明其他API无效的原因。

我能想到的唯一另一件事:kAudioFilePropertyBitRate仅在OS X 10.5中定义。如果你在10.4或更早版本上运行,你的代码仍会运行,但AudioFile框架根本不会知道bitrate属性,因此可能会返回零。