objective-c – 如何在cocoa中获取音频文件的比特率

我需要从音频文件中获取比特率信息,出于某种原因,带有kAudioFilePropertyBitRate常量的AudioFileGetProperty函数总是为我返回0.与kAudioFilePropertyInfoDictionary相同,生成的字典不包含比特率信息.我想尝试在mp3的情况下从原始数据中获取此信息,但我需要支持不同的文件格式,如m4a和其他.有没有其他方法可以做到这一点? 最佳答案 如果您正在处理文件,则可以尝试使用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属性,因此可能会返回零.

点赞