ios - 无法播放AVAudioPlayer中文档中的文件

标签 ios swift2 avaudioplayer nsfilemanager

我在应用程序的文档文件夹中有一个文件,我想播放它。

if NSFileManager.defaultManager().fileExistsAtPath(pathString) {
    let url = NSURL(fileURLWithPath:pathString, isDirectory: false)
    do {
        let player = try AVAudioPlayer(contentsOfURL:url)
        player.prepareToPlay()
        player.play()
    }
    catch let error as NSException {
        print(error)
    }
    catch {}
}

文件系统上有一个文件,我检查了它的存在。同时执行do块中的所有行。既没有异常也没有错误,并且仍然没有声音播放。有什么可能的问题,我该如何解决?

最佳答案

您应该使audioPlayer成为全局实例变量。调用.play()后,此代码将立即释放该代码

class ViewController: UIViewController {

    var audioPlayer = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        if NSFileManager.defaultManager().fileExistsAtPath(pathString){
        let url = NSURL(fileURLWithPath:pathString, isDirectory: false)
        AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)

        var error:NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }
}
}

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

相关文章:

ios - 在 Swift CLI 中使用 GCD

ios - 只播放一次声音,条件

ios - 播放传入的音频数据

ios - 正方形未出现

ios - 配置文件不包含证书

ios - 适用于 Cordova 的 Visual Studio 工具 - 适用于 iOS 的 RemoteBuild 失败

带有结构/协议(protocol)的 Swift 多态闭包分派(dispatch)

ios - Twitter profileImageURL 间歇性不加载(iOS Swift)

iphone - 暂停/启动 AVAudioPlayer 没有毛刺爆裂声

ios - 我应该如何在 RxSwift Singles 中正确使用 guard 语句?