Я хочу интегрировать FFTView из AudioKit в свое приложение, чтобы показать этот классный визуализатор.
Проблема, с которой я столкнулся, заключается в том, что воспроизводимый мной звук взят из библиотеки 2014 года ( TritonSDK), который откуда-то передает аудио, чтобы предоставить вам радиостанцию для прослушивания. Поэтому у меня нет никакого контроля над звуком, все обрабатывается SDK.
Однако SDK предоставляет свойство AudioQueueRef, но судя по тому, что я вижу в документации Apple , на него невозможно подписаться на аудиоданные, если вы не контролируете создание очереди.
Поэтому я подумал, план Б: использовать AVAudioEngine для подбора звука он уже воспроизводится, но, к сожалению, я не получаю никаких данных для визуализатора (я получаю массив значений с плавающей запятой с нулевым значением)
Есть идеи, что я делаю неправильно, или это даже возможно, что я пытаюсь? Заранее спасибо!
Мои настройки:
import AudioKit
import AVFAudio
final class AudioCapture: ObservableObject {
@Published private(set) var node: Node
private let engine = AVAudioEngine()
init() {
self.node = NodeWrapper(avAudioNode: engine.mainMixerNode)
}
func start() {
do {
try engine.start()
} catch {
print("Error starting AVAudioEngine: \(error.localizedDescription)")
}
if node.avAudioNode != engine.mainMixerNode {
node = NodeWrapper(avAudioNode: engine.mainMixerNode)
}
}
func stop() {
engine.stop()
}
}
// MARK: - Utility
private final class NodeWrapper: Node {
var connections: [Node] = []
let avAudioNode: AVAudioNode
init(avAudioNode: AVAudioNode) {
self.avAudioNode = avAudioNode
}
}
import SwiftUI
import AudioKitUI
struct RadioView: View {
@ObservedObject var viewModel: RadioViewModel
@Environment(\.safeAreaInsets) private var safeAreaInsets: EdgeInsets
var body: some View {
FFTView(viewModel.audioCapture.node)
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... udioengine
AudioQueueRef перехватывает аудиоданные для создания визуализатора музыки (или AVAudioEngine или AudioEngine из AudioKit ⇐ IOS
Программируем под IOS
1720890936
Anonymous
Я хочу интегрировать FFTView из AudioKit в свое приложение, чтобы показать этот классный визуализатор.
Проблема, с которой я столкнулся, заключается в том, что воспроизводимый мной звук взят из библиотеки 2014 года ( TritonSDK), который откуда-то передает аудио, чтобы предоставить вам радиостанцию для прослушивания. Поэтому у меня нет никакого контроля над звуком, все обрабатывается SDK.
Однако SDK предоставляет свойство AudioQueueRef, но судя по тому, что я вижу в документации Apple , на него невозможно подписаться на аудиоданные, если вы не контролируете создание очереди.
Поэтому я подумал, план Б: использовать AVAudioEngine для подбора звука он уже воспроизводится, но, к сожалению, я не получаю никаких данных для визуализатора (я получаю массив значений с плавающей запятой с нулевым значением)
Есть идеи, что я делаю неправильно, или это даже возможно, что я пытаюсь? Заранее спасибо!
Мои настройки:
import AudioKit
import AVFAudio
final class AudioCapture: ObservableObject {
@Published private(set) var node: Node
private let engine = AVAudioEngine()
init() {
self.node = NodeWrapper(avAudioNode: engine.mainMixerNode)
}
func start() {
do {
try engine.start()
} catch {
print("Error starting AVAudioEngine: \(error.localizedDescription)")
}
if node.avAudioNode != engine.mainMixerNode {
node = NodeWrapper(avAudioNode: engine.mainMixerNode)
}
}
func stop() {
engine.stop()
}
}
// MARK: - Utility
private final class NodeWrapper: Node {
var connections: [Node] = []
let avAudioNode: AVAudioNode
init(avAudioNode: AVAudioNode) {
self.avAudioNode = avAudioNode
}
}
import SwiftUI
import AudioKitUI
struct RadioView: View {
@ObservedObject var viewModel: RadioViewModel
@Environment(\.safeAreaInsets) private var safeAreaInsets: EdgeInsets
var body: some View {
FFTView(viewModel.audioCapture.node)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78744503/audioqueueref-intercept-audio-data-to-build-a-music-visualiser-or-avaudioengine[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия