2015-08-14 5 views
7

Ich bin auf der Suche nach einer Möglichkeit, eine ähnliche audio-Bars Visualizer in iOS zu erstellen.Audiobalken Visualizer in iOS

enter image description here

Jeder weiße Balken wird nach oben und nach unten in Abhängigkeit von Audio-Welle. Ich bin wirklich verloren, weil ich nicht viel Erfahrung mit Audio in Objective-c habe.

EDIT: Was ich suche ist das, was Overcast's app auf seine Visualizer tut (die Gruppe der vertikalen orangen Balken auf dem unteren Teil des Bildes des Podcast)

Wer kann helfen? Danke

EDIT: Dank Tomers Antwort habe ich es endlich geschafft. Zuerst habe ich this tutorial gemacht, um alles klar zu machen. Dann habe ich meinen eigenen VisualizerView für mein Projekt erstellt, Sie finden ihn unter this gist. Vielleicht ist es nicht perfekt, aber es tut, was ich tun musste.

+0

Überprüfen Sie die Antwort auf diese Frage http://stackoverflow.com/questions/27733553/equalizer-from-audio-data – arturdev

+0

Siehe hier [https://github.com/prodia/AudioVisualizer](https:// github.com/prodia/AudioVisualizer) –

Antwort

7

Im Allgemeinen Sie haben ein paar Optionen, wenn Sie eine Vorstellung davon, was für etwas bekommen möchten klingt wie in iOS:

  • Verwenden Sie den einfachen AVAudioPlayer Audio-Player und dann die [audioPlayer averagePowerForChannel:] Methode verwenden, um die Durchschnitts Audio zu bekommen Level für den aktuellen Moment. Überprüfen Sie this tutorial.
  • Verwenden Sie die Audio Queue API, mit der Sie das gewünschte Audio an den Lautsprecher senden können: Sie würden Audio von Ihrer Quelle lesen und die Puffer jedes Mal füllen. (Wenn Sie von einer Datei lesen, verwenden Sie AVAssetReader) Auf diese Weise Sie immer genau wissen, welche Wellenform Sie spielen, so können Sie zum Beispiel ihre Durchschnittsleistung berechnen oder auf andere Weise wie FFT verarbeiten. Dann würdest du die Balken entsprechend aktualisieren.

EDIT: Der üblicher Weg, so etwas zu tun zu verwenden, ist Trans der Fast-Fourier (FFT) - es extrahiert Frequenzinformationen aus einem Ton. Here's ein gutes Beispiel für die Verwendung auf iOS (Apple's guide here). Aber natürlich müssen Sie, um es zu verwenden, genau wissen, welche Wellenform Sie jedes Mal spielen, also würden Sie wahrscheinlich eine API der unteren Ebene wie Audio Queue verwenden wollen.

+0

Ich habe einen kleinen Test mit averagePowerFor Channel gemacht: aber es zeigt nur zwei Kanäle an, weil es ein Stereo Audio ist. Wie kann das zu einem Display mit mehreren Balken werden? – WedgeSparda

+0

@WedgeSparda Verwenden Sie SpriteKit und setzen Sie 'yScale' auf einen' float' Wert für die Amplitude des Sounds. – DDPWNAGE

+0

@WedgeSparda Wenn Sie wirklich wollen, dass jeder Balken völlig unabhängig von den anderen ist, können Sie FFT verwenden. Dadurch erhalten Sie die Frequenzkomponenten des Sounds. Googeln Sie einfach nach "fft ios" und Sie werden viel gutes Material finden. Andernfalls müssten Sie einen Algorithmus erstellen, um die Balken basierend auf der Durchschnittsstärke zu ändern. – Tomer

Verwandte Themen