问题
Why doesn't the following code play a sound? It returns "true" for play(), but I cannot hear anything.
let path = "/Users/account/Music/sound.mp3";
let fileURL = NSURL(fileURLWithPath: path)
var Player = AVAudioPlayer(contentsOfURL:fileURL, error:nil);
Player.delegate = self;
Player.prepareToPlay();
Player.volume = 1.0;
var res = Player.play();
println(res);
If I use the following code instead, I can hear the sound.
var inFileURL:CFURL = fileURL!;
var mySound = UnsafeMutablePointer<SystemSoundID>.alloc(sizeof(SystemSoundID));
AudioServicesCreateSystemSoundID(inFileURL, mySound);
AudioServicesPlaySystemSound(mySound.memory)
- OS X Yosemite 10.10.3
- Xcode 6.2
回答1:
The problem is that Player, your AVAudioPlayer, is a local variable. So it goes out of existence immediately - before it can even start playing, let alone finish playing.
Solution: make it a property instead, so that it will persist.
来源:https://stackoverflow.com/questions/29379524/avaudioplayer-play-does-not-play-sound