4

我需要从音频文件中获取比特率信息,出于某种原因,带有 kAudioFilePropertyBitRate 常量的 AudioFileGetProperty 函数总是为我返回 0。与 kAudioFilePropertyInfoDictionary 相同,生成的字典不包含比特率信息。如果是 mp3,我会尝试从原始数据中手动获取,但我需要支持不同的文件格式,例如 m4a 等。有没有其他方法可以做到这一点?

4

1 回答 1

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 框架根本不知道比特率属性,因此可能会返回零。

于 2009-05-13T21:19:58.183 回答