簡體   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