2016-07-07 8 views
3

Dies ist eine zweiteilige Frage:Audio-Wellenform-Visualisierung in schnellen

AVAudioRecorder Verwendung ist es möglich, eine Wellenform reagiert auf das eingehende Audio in Echtzeit ähnlich wie haben, was passiert, wenn Sie siri auf dem iPhone aktivieren. Vielleicht mit averagePowerForChannel?

Gibt es auch eine Möglichkeit, die Audio-Samples einer Aufnahme zu sammeln, um eine Wellenform zu rendern?

Ich weiß, dass Novocaine existiert, aber ich hatte gehofft, keinen Rahmen zu verwenden.

Antwort

1

Scheint nicht möglich mit AVAudioRecorder von selbst.

Eine Alternative wäre AVCaptureSession mit einer AVCaptureAudioDataOutput, die Zugriff auf den Raw-Audio-Puffer bietet, von dem die Wellenform gelesen werden kann.

Der größte Teil der Verarbeitung würde in dem Delegierten erfolgen:

func captureOutput(AVCaptureOutput!, didOutputSampleBuffer: CMSampleBuffer!, from: AVCaptureConnection!) 

Sie wahrscheinlich brauchen würde, eine Art Drosselung nur Prozess jeden N-ten Probe zu implementieren, so dass Ihre visualiser Code nicht mit dem Audio nicht stört .

AVCaptureSession ist weit mehr rudimentär im Vergleich zu AVAudioRecorder - es keine Aufnahmeeinrichtungen zum Beispiel selbst liefert, und so, wenn Sie den Ton auch aufzeichnen wollten würden Sie ein AVAssetWriter verwenden müssen, um die Proben zu speichern.

Diese SO-Frage zeigt, wie auf die Beispielpuffer zugegriffen wird. Es verwendet AVAssetReader eine Datei zu laden, aber die Delegierten ist genau das gleiche, wie es für Echtzeit-Verarbeitung verwendet werden: Reading audio samples via AVAssetReader

+0

Wäre es möglich, 'AVAudioRecorder' für die Aufnahme zu verwenden und' AVCaptureSession' mit 'AVCaptureAudioDataOutput' für die Audio-Verarbeitung? – Brosef