Я использую 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 разных канала, или указать мне, где их изучить, это было бы замечательно.Спасибо!