我一直在使用 Superpowered iOS 库来分析音频并提取 BPM、响度、音高数据。我正在开发一个 iOS Swift 3.0 项目,并且已经能够使用 ObjC 的 Bridging headers 让 C 类与 Swift 一起工作。
我遇到的问题是,虽然我可以创建一个解码器对象,从音乐库中提取音频并将其存储为 .WAV - 我无法仅为提取的音频片段创建解码器对象并获取分析器类返回数据。
我的方法是创建一个解码器对象,如下所示:
var decodeAttempt = decoder!.open(self.originalFilePath, metaOnly: false, offset: offsetBytes, length: lengthBytes, stemsIndex: 0)
我认为“offsetBytes”和“LengthBytes”是音频文件中的位置。由于我已经解压缩了音频,将其存储为 WAV,然后将其提供给解码器,因此我正在使用 44100 x 2 x 16 / 8 = 176400 字节每秒的 PCM Wave 音频公式计算偏移量和长度。然后使用它来指定起点和长度(以字节为单位)。我不确定这是正确的方法,因为解码器将返回“未知文件格式”。
关于如何实现这个问题的标题的任何想法甚至替代建议?提前致谢!