Ich bin wirklich begeistert von der neuen AVAudioEngine. Es scheint wie ein guter API-Wrapper um Audio-Einheit. Leider ist die Dokumentation bisher nicht existent, und ich habe Probleme, einen einfachen Graphen zu erhalten.
Wenn Sie den folgenden einfachen Code verwenden, um ein Audio-Engine-Diagramm zu erstellen, wird der Tap-Block niemals aufgerufen. Es imitiert einen Teil des Beispielcodes, der im Web schwebt, obwohl auch diese nicht funktionierten.
%Vor%Alles, was ich suche, ist der rohe PCM-Puffer für die Analyse. Ich brauche keine Effekte oder Ausgaben. Laut dem WWDC-Vortrag "502 Audio Engine in Practice" sollte dieses Setup funktionieren.
Wenn Sie jetzt Daten vom Eingangsknoten erfassen wollen, können Sie einen Knotenpunkt installieren und wir haben darüber gesprochen.
Aber was ist an diesem speziellen Beispiel interessant? Wenn ich nur mit dem Eingangsknoten arbeiten wollte, sag einfach Daten vom Mikrofon und untersuche es vielleicht, analysiere es in Echtzeit oder schreibe es in die Datei, ich kann es Installieren Sie direkt einen Abgriff auf dem Eingabeknoten.
Und der Tap wird die Arbeit machen, den Eingangsknoten für Daten zu ziehen, ihn in Puffer zu stopfen und ihn dann an die Anwendung zurückzugeben.
Sobald Sie diese Daten haben, können Sie tun, was immer Sie damit tun müssen.
Hier sind einige Links, die ich ausprobiert habe:
Bearbeiten: Dies ist die Implementierung basierend auf Thorsten Karrers Vorschlag. Es funktioniert leider nicht.
%Vor%Es könnte sein, dass Ihre AVAudioEngine den Geltungsbereich verlässt und von ARC freigegeben wird ("Wenn es Ihnen gefallen hat, dann sollten Sie es behalten ...").
Der folgende Code (Engine wird zu einem ivar verschoben und bleibt so hängen) feuert den Tap:
%Vor%(Ich habe die Fehlerbehandlung aus Platzgründen entfernt)
AKTUALISIERT: Ich habe ein komplettes Arbeitsbeispiel für Aufnahme-Mikrofon-Eingang implementiert, einige Effekte (Hall, Verzögerung, Verzerrung) zur Laufzeit angewendet und alle diese Effekte in einer Ausgabedatei gespeichert.
%Vor%// Initialisiere die Audio-Engine
%Vor%// Jetzt die Aufnahmefunktion:
%Vor%Ich hoffe, das könnte dir helfen. Danke!
nettes Thema
Hallo Brodney
in Ihrem Thema finde ich meine Lösung. Hier ist ein ähnliches Thema AVAudioPCMBuffer mit AVAudioRecorder generieren
siehe Vorlesung Wwdc 2014 502 - AVAudioEngine in Practice Capture-Mikrofon = & gt; in 20 min Puffer mit Tap-Code erstellen = & gt; in 21 .50
hier ist swift 3 code
%Vor%zum Stoppen von Audio
%Vor%Tags und Links ios avfoundation swift core-audio ios8.1