Отдельные извлеченные левый и правый каналы - PullRequest
0 голосов
/ 07 июня 2019

Я использую 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.Кажется также, что некоторые аудиофайлы имеют другой состав данных каналов, чем другие.Так что, если кто-то может объяснить мне, как эти вещи работают или, в конечном счете, как извлечь 2 разных канала, или указать мне, где их изучить, это было бы замечательно.Спасибо!

...