2016-11-02 2 views
0

Я пытаюсь загрузить mp3-файл с помощью Alamofire и сохранить его в нужном месте. Затем, из этого места, я пытаюсь воспроизвести этот файл, но он дает мне ошибку.Ошибка OSStatus 1685348671 AVAudioPlayer

Это функция загрузки

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)") 
      } 
     } 

    } 

Я хотел бы знать, лучшие практики скачивания файла и сохранить его, а затем играть.

+0

[Код ошибки звучит как-то неправильно с файлом.] (Https://www.osstatus.com/search/results?platform=all&framework=all&search=1685348671) –

+0

О, спасибо, я не знал об этом сайте! Итак, как загрузить файл с помощью Alamofire и сохранить его в виде mp3-файла или как загрузить файл с целевого URL-адреса? – sphynx

+1

Ничто в коде не выглядит неправильно. Убедитесь, что файл является допустимым mp3, а не как страница 404 или что-то в этом роде. –

ответ

-1

Я узнал, что я ввел неправильный URL-адрес API, поэтому он дал мне недопустимый файл, который не воспроизводится.

+0

Это не полезно для других, пожалуйста, укажите, что именно не так, или это неприемлемый ответ. – Martian2049

Смежные вопросы