我的ViewController中有一个非常简单的单 View Swift应用程序中的代码:

var audioPlayer = AVAudioPlayer()

@IBAction func playMyFile(sender: AnyObject) {

    let fileString = NSBundle.mainBundle().pathForResource("audioFile", ofType: "m4a")
    let url = NSURL(fileURLWithPath: fileString)
    var error : NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
    audioPlayer.delegate = self
    audioPlayer.prepareToPlay()
    if (audioPlayer.isEqual(nil)) {
        println("There was an error: (er)")
    } else {
        audioPlayer.play()
        NSLog("working")
    }

我添加了import AVFoundation,并且audioPlayer是全局变量。当我执行代码时,它确实会打印“正在工作”,因此它可以顺利通过,但不会播放声音。设备不会处于静音状态。

最佳答案

您的代码有太多错误,以至于Socratic方法崩溃了。仅仅将其丢弃并显示给您可能是最简单的:

var player : AVAudioPlayer! = nil // will be Optional, must supply initializer

@IBAction func playMyFile(sender: AnyObject?) {
    let path = NSBundle.mainBundle().pathForResource("audioFile", ofType:"m4a")
    let fileURL = NSURL(fileURLWithPath: path)
    player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
    player.prepareToPlay()
    player.delegate = self
    player.play()
}

我没有费心做任何错误检查,但是好处是,如果有问题,您将崩溃。

最后一点可能无关紧要:并非每个m4a文件都可以播放。例如,高度压缩的文件可能会静默失败(双关语)。

关于ios - AVAudioPlayer无法在Swift中播放音频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24792783/

10-14 22:05
查看更多