mp3 Datei loopen mit AVAudio

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mp3 Datei loopen mit AVAudio

    Hallo zusammen!
    Ich möchte eine Audiodatei abspielen und den Pitch während des Abspielens verändern können. Daher greife ich auf AVAudioPlayerNode mit verknüpfter AVAudioUnitTimePitch Control zurück, das verändern des Pitch funktioniert auch. Allerdings weiß ich nicht wie ich die Datei nun loopen kann. Mein Versuch lief über AVAudioPCMBuffer. Hier mein Code:

    Quellcode

    1. func playSound(soundName: String) throws{
    2. guard let url = Bundle.main.url(forResource: soundName, withExtension: "mp3") else { return }
    3. let file = try AVAudioFile(forReading: url)
    4. let audioPlayer = AVAudioPlayerNode()
    5. //New:
    6. let audioFileBuffer = AVAudioPCMBuffer(pcmFormat: file.fileFormat, frameCapacity: AVAudioFrameCount(file.length))
    7. try? file.read(into: audioFileBuffer!)
    8. engine.attach(audioPlayer)
    9. engine.attach(pitchControl)
    10. engine.connect(audioPlayer, to: pitchControl, format: nil)
    11. engine.connect(pitchControl, to: engine.mainMixerNode, format: nil)
    12. audioPlayer.scheduleBuffer(audioFileBuffer!,at: nil, options: .loops, completionHandler: nil) //Changed
    13. try engine.start()
    14. audioPlayer.play()
    15. }
    Alles anzeigen
    Allerdings kommt bei Programmstart ein Fehler: Thread 1: "required condition is false: isPCMFormat" aufgrund