Swift - AVAudioPlayer没有播放声音

时间:2016-03-31 09:32:43

标签: ios swift avfoundation avaudioplayer

我有一个名为speeding.mp3的声音,我试图通过在类的根目录中创建一个AVAudioPayer实例:

let speedingAudioPlayer = try! AVAudioPlayer(contentsOfURL: NSBundle.mainBundle().URLForResource("speeding", withExtension: "mp3")!)

然后,当我运行应用程序时,它会抛出错误,但我不知道为什么会发生这种情况。 speeding.mp3文件位于Build Phases的Bundle Resources下拉列表中,因此它应该很好找到它。如果我尝试在模拟器中打印出URL并将其粘贴到Safari中,它会加载并正常播放文件。我将AVFoundation导入到类中,并将框架导入到项目中。

3 个答案:

答案 0 :(得分:1)

使用此代码段调试错误,

if let URL = NSBundle.mainBundle().URLForResource("speeding", withExtension: "mp3") {
    do {
        let speedingAudioPlayer = try AVAudioPlayer(contentsOfURL: URL)
    } catch  let error as NSError {
        print(error.localizedDescription)
    }
} else {
    print("No such file exist")
}

答案 1 :(得分:1)

我发现了另一个问题,即var放在了课外,否则会被电话解除分配。

AVAudioPlayer Object Sound Not Playing - Swift

答案 2 :(得分:1)

import UIKit
import AVFoundation

class CustomAudioPlayer {
  var audioPlayer : AVAudioPlayer!

  override func viewDidLoad() {
    super.viewDidLoad()
    playSound("sound_file_name")
  }

  func playSound(soundName: String)
  {
    let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundName, ofType: "mp3")!)
    do{
        audioPlayer = try AVAudioPlayer(contentsOfURL:alertSound)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }catch {
        print("Error getting the audio file")
    }
  }
}

尝试使用此代码播放声音。