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

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

以上是关于如何在可可中获取音频文件的比特率的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 AVPlayer 何时使用仅音频比特率?

如何在 C# 中读取 .wav 文件的比特率

如何在 iOS 中获取现有 MP3 或 AAC 的比特率?

查找流 (mp3) 信息(持续时间、比特率)

如何使用 ffprobe 从 HLS/M3U8 文件中检测视频比特率

使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小