Я пытаюсь воспроизвести mp3 из файла данных, который я загрузил с помощью Alamofire. Песня прекрасна, я могу воспроизвести ее с помощью AVAudioPlayer (data: Data). Как мне воспроизвести один и тот же файл данных с помощью AVPlayer? Я не мог найти, как создать PlayerItem из Data или AVAsset из Data. Кроме того, у меня есть URL-адрес для пути к песне, но этот URL-адрес не работает с AVPlayer. Музыка просто не играет.AVPlayerItem из URL-адреса не играет
func startSong(withIndex: Int) {
if let item = getItem(atIndex: withIndex) {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
print("AVAudioSession is Active")
} catch let error as NSError {
print(error.localizedDescription)
}
let playerItem = item
self.player = AVPlayer(playerItem: playerItem)
} catch let error as NSError {
print(error.localizedDescription)
}
}
}
func getItem(atIndex: Int) -> AVPlayerItem? {
var item: AVPlayerItem
var url: URL
let song = playlist.getSong(index: atIndex)
if PlaylistsService.sharedService.isFileDownloaded(inPath: SongPath.Offline(id: (song?.getID())!).path()) {
url = URL(fileURLWithPath: SongPath.Offline(id: (song?.getID())!).path())
} else if PlaylistsService.sharedService.isFileDownloaded(inPath: SongPath.Temp(id: (song?.getID())!).path()) {
url = URL(fileURLWithPath: SongPath.Temp(id: (song?.getID())!).path())
} else {
self.downloadSong(song: song!)
url = URL(fileURLWithPath: SongPath.Temp(id: (song?.getID())!).path())
}
item = AVPlayerItem(url: url)
return item
}
@IBAction func playPause(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
if sender.isSelected {
print("Play")
self.player.play()
} else {
print("Pause")
self.player.pause()
}
}
Поместите точку останова на 'self.player.play()'. Выполняется ли эта строка? – matt
Да, да. http://prntscr.com/d4njv4 – sphynx
Хорошо, в точке, где вы говорите 'self.player.play()', вы можете попробовать зарегистрировать дополнительную информацию о состоянии плеера. Что такое 'currentTime'? Что такое 'currentItem'? Если у него есть элемент, что такое 'статус' этого элемента? Что такое «актив» этого элемента? – matt