我正在尝试使用 AVAudioPlayer
播放音频文件。以前,我能够使用代码成功播放音频:
// Play the audio file
var soundID: SystemSoundID = 0
let mainBundle: CFBundleRef = CFBundleGetMainBundle()
// Get the audio reference
if let ref: CFURLRef = CFBundleCopyResourceURL(mainBundle, filename, Globals.SOUND_TYPE, nil) {
// Reference found, play audio
AudioServicesCreateSystemSoundID(ref, &soundID)
AudioServicesPlaySystemSound(soundID)
}
但是应用程序中的一个新要求是我需要能够以一定的音量播放音频。 AudioServicesPlaySystemSound
无法提供该功能。所以现在我有以下代码:
do {
let audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(filename, ofType: Globals.SOUND_TYPE)!))
audioPlayer.volume = volume
audioPlayer.play()
print("play audio")
} catch {
print("Error")
}
我正在播放音频 print
语句,但没有播放音频。我什至硬编码了 audioPlayer.volume = 1.0
,但没有播放音频。为了播放音频,我可能缺少什么代码?
最佳答案
您的本地 audioPlayer
变量在声音可以播放之前被释放。
如果您为播放器添加一个属性(实例变量)并使用它,播放器将有机会在被释放之前播放声音。
在你的类中,创建一个属性,如
var audioPlayer: AVAudioPlayer?
然后,代替
let audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(filename, ofType: Globals.SOUND_TYPE)!))
使用属性的引用
self.audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(filename, ofType: Globals.SOUND_TYPE)!))
self
在 Swift 中不是必需的。
关于ios - 无法使用 AVAudioPlayer 播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043973/