Frage

Ich möchte in der Lage sein, Audio wiedergeben ich aufgenommen habe mit AVAudioRecorder @ 1.5x oder 2.0x Geschwindigkeit. Ich sehe nichts in AVAudioPlayer, die das unterstützen. Ich würde einige Vorschläge zu schätzen weiß, mit Code, wenn möglich, auf, wie das SDK mit dem iPhone 3.x zu erreichen. Ich bin nicht allzu besorgt mit dem Tonhöhe Senkung für eine erhöhte Wiedergabegeschwindigkeit zu kompensieren, aber so optimal wäre tun zu können.

War es hilfreich?

Lösung

Siehe diese Frage . Mit anderen Worten, werden Sie eine andere API wie Audio Queue-Service verwenden. Wenn Sie einen einfachen Hack ausprobieren möchten, können Sie versuchen, die Abtastrate Eigenschaft der Audiodatei zu verdoppeln. Es wird wahrscheinlich nicht, obwohl arbeiten. Außerdem wird davor gewarnt, dass es ziemlich CPU fordert die Wiedergabegeschwindigkeit einzustellen, während die gleiche Steigung zu halten. Hier finden Sie eine eine der verfügbaren Techniken verwenden müssen genannt „Time-Stretching“ . Auch für den Fall, Sie haben es jetzt nicht realisiert, dabei komplizierte Dinge mit Audio auf dem iPhone ist ein großer Schmerz, weil Apples Dokumentation ist in der Regel entweder sehr schlecht oder gar nicht vorhanden.

Andere Tipps

Ändern der Abtastrate sollte wie ein Tonbandgerät arbeiten würden, wenn Sie es schneller gespielt. Alles wird in der Tonhöhe höher. Um die Tonhöhe zu halten die gleichen sind, müssten Sie eine Audio-Unit-Graph einrichten, die die AUPitch Wirkung enthält, und senken die Tonhöhe im gleichen Verhältnis, das Sie die Abtastrate erhöhen.

Wenn Sie Audio schneller spielen wollen oder langsamer, es ist ein Build-In-Verfahren in AVAudioPlayer. Haben Sie Audioplayer Rate Eigenschaft versucht? in Swift wird es so sein -

    audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
    audioP.enableRate = true
    audioP.prepareToPlay()
    audioP.rate = 1.5
    audioP.play()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top