2016-01-08 9 views
8

Ich arbeite an einer App, mit der der Benutzer eine Art Dub erstellen kann. Es wird eine Audiodatei abgespielt, und der Benutzer kann in bestimmten Momenten tippen, um Ton einzufügen (ähnlich wie bei einer Zensur-Taste). Ich frage mich, wie ich das Endprodukt aufnehmen soll.Ist es möglich, den Ton aufzunehmen, der vom iPhone kommt?

Das Aufnehmen von Audio direkt vom iPhone scheint der einfachste Weg zu sein, da der Benutzer das fertige Produkt bereits hört. Ich kann jedoch nichts darüber finden, wie dies zu tun ist. Wenn nicht möglich, gibt es Vorschläge?

+0

Hallo, ich glaube, Sie können einen Ausgangspunkt hier http://zathras.de/programming/cocoa/UKSoundFileRecorder nehmen.zip/UKSoundFileRecorder/UKSoundFileRecorder/ Obwohl es für MacOS ist, glaube ich, dass es auch für iPhone funktioniert – ColdSteel

+0

Eine Frage: Das Audio, das gespielt wird .., ist von der gleichen App, die Sie verwenden werden, um es zu zensieren? –

+0

@HugoAlonso Ja, das ist richtig. – bkwebhero

Antwort

1

Der beste Weg wäre wahrscheinlich, die AV Foundation framework zum Mischen und dann Pufferung des Audiomaterials sowie zum Abspielen zu verwenden. Dies würde ein hohes Abstraktionsniveau ermöglichen, während garantiert wird, dass sowohl abgespieltes als auch gespeichertes Audio gleich ist.

Abgesehen davon: von einem Wie erreiche ich das mit minimalem Code -Perspektive, ohne weitere Informationen über Ihre Einrichtung, ist die Frage viel zu breit und/oder auf der Meinung basiert.

+0

Ich denke nicht, dass es zu breit ist. Ich wollte herausfinden, ob es eine einfache Möglichkeit gibt, das Audio vom iPhone aufzunehmen, ähnlich wie es einen einfachen Weg zu Screenshot-Bildern gibt. – bkwebhero

1

Sie müssen mit Puffern arbeiten. Ich weiß jetzt nicht, wie es in Swift gemacht wird, aber Sie können es in Obj-C implementieren und dann überbrücken.

Sie dazu beziehen Antworten hier in Stackoverflow (Sie sind ein bisschen alt)

https://stackoverflow.com/a/11218339/2683201

https://stackoverflow.com/a/10101877/2683201

und ein Projekt existiert auch (aber in Obj-C) https://github.com/alexbw/novocaine

Hauptsächlich wäre die Idee für Ihren Fall 2 getrennt zu haben ed Puffer und Ihren Soundeffekt. Dann spielen Sie aus dem Puffer A (Ihre Musik) und kopieren die abgespielten Daten in den Puffer B (endgültige Ausgabe), außer Sie spielen den Effekt. In Wich Fall werden Sie die Wirkung von Daten in Ihren Puffer B. Kopieren

Andere Option ist es offline zu tun:

  1. Spielen Sie Ihre Musik (oder Audio) und einen Timer läuft mit der verstrichenen Zeit synchronisiert halten von Ihrem "zu zensierten Audio".
  2. Speichern Sie den Zeitstempel beim Starten und Beenden der Zensortaste (zum Beispiel).
  3. Überlappung Puffer A mit Ihrem Effekt in den aufgezeichneten (Start-Ende) Zeitstempel.

  4. Speichern Sie den Puffer als Datei (oder tun, was Sie mit ihm tun müssen,)

UPDATE:

Sie sollte so einen Blick in die Apple-Implementierung von etwas nehmen : https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html