分别提取左右声道

时间:2019-06-07 15:19:35

标签: swift avaudioengine

我正在使用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的作用。还似乎有些音频文件具有与其他音频文件不同的通道数据组成。因此,如果有人可以向我解释这些东西是如何工作的,或者最终是如何提取两种不同的渠道,或者指出要在哪里学习的,那将是非常伟大的。谢谢!

0 个答案:

没有答案