我正在使用AVAudioEngine
从音频文件中提取特定频率(低通和高通后)的样本。
我找不到足够的代码来学习该过程,但是我相信一旦找到,就可以:
if let chans = buffer.floatChannelData?.pointee {
let left = chans.advanced(by: 0)
let right = chans.advanced(by: 1)
for b in 0..<flength {
let leftValue = left[b]
let rightValue = right[b]
这似乎一直有效,直到它开始随机崩溃并带有一个新的特定音频文件(总是在读取最后一个缓冲区样本时)。
调试内存引用看起来似乎并没有真正做到我想的那样。至少在该文件上,这看起来像是在简单地创建一个偏移量(类似于rightValue = left[b+1]
,如果这些值是交替的并且b的增量仅为1,那么它就没什么用了)。
我不太清楚floatChannelData
数据的结构以及advanced
的作用。还似乎有些音频文件具有与其他音频文件不同的通道数据组成。因此,如果有人可以向我解释这些东西是如何工作的,或者最终是如何提取两种不同的渠道,或者指出要在哪里学习的,那将是非常伟大的。谢谢!