Je suis en train d'utiliser la nouvelle AVAudioEngine dans iOS 8.completionHandler de AVAudioPlayerNode.scheduleFile() est appelée trop tôt
Il ressemble à la completionHandler de player.scheduleFile() est appelée avant le fichier audio a fini de jouer. J'utilise un fichier son d'une longueur de 5s - et le println()
-Message apparaît autour de 1 seconde avant la fin du son. Est-ce que je fais quelque chose de mal ou est-ce que je me méprends sur l'idée d'un achèvement de la main?
Merci!
Voici un code:
class SoundHandler {
let engine:AVAudioEngine
let player:AVAudioPlayerNode
let mainMixer:AVAudioMixerNode
init() {
engine = AVAudioEngine()
player = AVAudioPlayerNode()
engine.attachNode(player)
mainMixer = engine.mainMixerNode
var error:NSError?
if !engine.startAndReturnError(&error) {
if let e = error {
println("error \(e.localizedDescription)")
}
}
engine.connect(player, to: mainMixer, format: mainMixer.outputFormatForBus(0))
}
func playSound() {
var soundUrl = NSBundle.mainBundle().URLForResource("Test", withExtension: "m4a")
var soundFile = AVAudioFile(forReading: soundUrl, error: nil)
player.scheduleFile(soundFile, atTime: nil, completionHandler: { println("Finished!") })
player.play()
}
}
Fonctionne comme une solution de contournement. Merci! – Oliver
Belle solution de contournement. –
J'adore ça. Fonctionne comme un charme! –