[英]Can't record on iPad: Error Domain=NSOSStatusErrorDomain Code=1718449215 “(null)”
[英]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.