OSStatus error 1685348671 AVAudioPlayer



我正在尝试用Alamofire下载mp3文件并将其保存到所需位置。然后,从那个位置,我试图播放那个文件,但它给了我一个错误。

这是下载功能

func downloadSong(song: Song, completion: @escaping(Bool) -> ()) {
        var headers: HTTPHeaders = [:]
        if let authorizationHeader = Request.authorizationHeader(user: Constants.authName, password: Constants.authKey) {
            headers[authorizationHeader.key] = authorizationHeader.value
        }
        let destination: DownloadRequest.DownloadFileDestination = { _, _ in
            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
            let fileURL = documentsURL.appendingPathComponent("(song.getID()).mp3")
            return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
        }
        Alamofire.download(APIEndpoint.Song(id: song.getID(), token: self.authToken!).path(), method: .get, headers: headers, to: destination).response { (response) in
            if response.error == nil, let filePath = response.destinationURL?.path {
                print(filePath)
                completion(true)
            } else {
                completion(false)
            }
        }
    }

这是一个播放功能

func playSong() {
        guard let songs = currentPlaylist?.getSongs() else { return }
        let song = songs[0]
        let documentsDirectoryURL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let destinationUrl = documentsDirectoryURL.appendingPathComponent("(song.getID()).mp3")
        print(destinationUrl)
        if FileManager.default.fileExists(atPath: destinationUrl.path) {
            print("The file already exists at path")
            do {
                try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
                try AVAudioSession.sharedInstance().setActive(true)
                player! = try AVAudioPlayer(contentsOf: destinationUrl, fileTypeHint: AVFileTypeMPEGLayer3)
                player!.play()
            } catch let error as NSError {
                print("error: (error.localizedDescription)")
            }
        }
    }

我想知道下载文件并保存然后播放的最佳做法

我发现,我输入了错误的API url,所以它给了我无效的文件,这是不可播放的。

编辑:

来自后端的文件不是有效的MP3音频文件,这就是发生错误的原因。

最新更新