我一直在使用Superpowered iOS库来分析音频并提取BPM,响度,音高数据。我正在开发一个iOS Swift 3.0项目,并且能够使用ObjC的Bridging标头让Sw类与Swift一起工作。
我遇到的问题是,虽然我可以创建解码器对象,从音乐库中提取音频并将其存储为.WAV - 我无法为提取的音频片段创建解码器对象并获取分析器类返回数据。
我的方法是按如下方式创建解码器对象:
var decodeAttempt = decoder!.open(self.originalFilePath, metaOnly: false, offset: offsetBytes, length: lengthBytes, stemsIndex: 0)
' offsetBytes'和' LengthBytes'我认为是音频文件中的位置。由于我已经解压缩音频,将其存储为WAV然后将其提供给解码器,我使用PCM Wave音频公式44100 x 2 x 16/8 = 176400字节/秒来计算偏移和长度。然后使用它来指定起始点和长度(以字节为单位)。我不确定这是否正确,因为解码器将返回“未知文件格式”。
有关如何实现此问题标题的任何想法甚至替代建议?提前谢谢!
答案 0 :(得分:1)
SuperpoweredDecoder的偏移和长度参数是因为Android APK文件格式,捆绑的音频文件只是简单地连接到包。
尽管WAV文件是"未压缩"虽然它可以,开头有一个标题,所以偏移和长度不是一个很好的方法。特别是因为标题仅存在于开头,并且没有标题解码是不可能的。
您提到可以将音频提取到PCM(并保存到WAV)。然后你就得到了答案:只需将不同的提取部分提交给SuperpoweredOfflineAnalyzer的不同实例。