AVAudioPlayer没有播放任何声音

时间:2016-04-04 08:25:41

标签: ios swift audio avfoundation

我创建了一个处理在我的应用中播放的音频的课程:

import AVFoundation    

class GSAudio{
    var soundFileNameURL: NSURL = NSURL()
    var soundFileName = ""
    var soundPlay = AVAudioPlayer()

    func playSound (soundFile: String){

        soundFileName = soundFile
        soundFileNameURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundFileName, ofType: "aif", inDirectory:"Sounds")!)
        do{
            try soundPlay = AVAudioPlayer(contentsOfURL: soundFileNameURL)
        } catch {
            print("Could not play sound file!")
        }

        soundPlay.prepareToPlay()
        soundPlay.play()
    }
}

但问题是当我通过使用来自不同类的GSAudio().playSound("Start")之类的东西来调用此代码时,声音无法播放。有人知道为什么吗?任何帮助表示赞赏。

非常感谢。

3 个答案:

答案 0 :(得分:0)

我有AVAudioPlayer方法,当按钮单击动作然后执行以下方法时,它工作正常,但是你想调用类和方法(ex' GSAudio()。playSound(" Start&#) 34;)')来自不同的类,你创建了委托方法来调用,它的工作做得很好。

@IBAction func btnPlayAction(sender: AnyObject) {

                let fileURL: NSURL = NSURL(string: previewUrl)!
                let soundData = NSData(contentsOfURL: fileURL)

                do {
                    playerVal = try AVAudioPlayer(data: soundData!)
                }
                catch {
                    print("Something bad happened. Try catching specific errors to narrow things down",error)
                }

                playerVal.delegate = self
                playerVal.prepareToPlay()

                playerVal.play()
}

希望它有用

答案 1 :(得分:0)

检查您的声音文件(URL)路径..(打印那个)和Checkout file:// 声音中是否存在主要问题ULR确定添加文件:/ /

//或者使用这个

NSURL * SoundURL = [NSURL fileURLWithPath:YourFilePath];

尝试这一个让我知道我是否正确

答案 2 :(得分:0)

我在GitHub上有一个帮助你做你想做的事。最好让这个类成为一个Singleton,这样你就可以更好地控制你的音乐,而不是创建你的助手的多个实例。

https://github.com/crashoverride777/Swift-Music-Helper