繁体   English   中英

错误域=NSOSStatusErrorDomain 代码=1954115647 “(空)”

[英]Error Domain=NSOSStatusErrorDomain Code=1954115647 “(null)”

所以我有一个 AVAudioPlayer,有时它工作得很好,但有时它会打印错误“Error Domain=NSOSStatusErrorDomain Code=1954115647“(null)””。 这是代码:

override func viewDidLoad() {
    super.viewDidLoad()
    downloadFileFromURL(url: URL(string: mainPreviewURL)!)
}

func downloadFileFromURL(url: URL) {
    var downloadTask = URLSessionDownloadTask()
    downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: {
        customURL, response, error in

        self.play(url: customURL!)
    })
    downloadTask.resume()
}

func play(url: URL) {
    do {
        player = try AVAudioPlayer(contentsOf: url)
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        player!.prepareToPlay()
        player!.play()
    } catch {
        print(error)
    }
}

使 do 语句中的代码如下所示:

    let songData = try NSData(contentsOfURL: songURL!, options: NSDataReadingOptions.mappedIfSafe)
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
    try AVAudioSession.sharedInstance().setActive(true)
    player = try AVAudioPlayer(data: songData!, fileTypeHint: AVFileTypeMpegLayer3)
    player!.prepareToPlay()
    player!.play()

当您遇到此类错误代码时,您的音频文件通常无法被 Xcode / OS 识别或已损坏。 要验证此步骤,您可以选择一个音频文件并尝试在 Xcode 中播放它:

在此处输入图片说明

如果你有,而不是这张图片,你的媒体播放器完全没有像这张图片:

在此处输入图片说明

也许你应该修复你的音频文件。 我检查了它,我发现有时当您使用GIT等版本控制操作系统(git 合并,从其他系统拉取..)或将文件复制到另一个系统时会发生这种情况。 但是您应该记住,High Sierra 可以从 FINDER 预览而不是 Sierra 播放 FLAC 的音频,因此您的问题可能仅与您当前的操作系统有关。

解决方案:删除并恢复原始音频文件/文件版本。 如果您尝试在运行到 Sierra 的模拟器中使用它,您可能会继续遇到此问题,请尝试使用 High Sierra 并查看发生了什么。

对我来说,我的应用程序在我的应用程序中有权利“NSFileProtectionComplete”。 这导致音频停止播放

使用此设置,如果您的应用程序导入音频文件(而不是与应用程序捆绑在一起),那么您需要编写文件以便它们有在后台播放的权限,否则默认情况下文件都会有“completeFileProtection”和AVAudioPlayer进入后台后不久将无法解码您的文件。

try data.write(to: fileURL, options: .completeFileProtectionUnlessOpen)

来自: https : //developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/encrypting_your_app_s_files

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM