如何在可可中获取音频文件的比特率
Posted
技术标签:
【中文标题】如何在可可中获取音频文件的比特率【英文标题】:How to get bitrate of audio file in cocoa 【发布时间】:2010-10-26 00:19:47 【问题描述】:我需要从音频文件中获取比特率信息,出于某种原因,带有 kAudioFilePropertyBitRate 常量的 AudioFileGetProperty 函数总是为我返回 0。与 kAudioFilePropertyInfoDictionary 相同,生成的字典不包含比特率信息。如果是 mp3,我会尝试从原始数据中手动获取,但我需要支持不同的文件格式,例如 m4a 等。有没有其他方法可以做到这一点?
【问题讨论】:
【参考方案1】:如果您正在处理文件,您可以随时尝试使用 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 框架根本不知道比特率属性,因此可能会返回零。
【讨论】:
感谢您的信息,Spotlight api 是我最后的选择,只是想确定是否没有任何其他音频 api 可以做到这一点。我在 10.5 上运行,这也是 minspec以上是关于如何在可可中获取音频文件的比特率的主要内容,如果未能解决你的问题,请参考以下文章