Я пишу приложение подкаста, и я хочу, чтобы пользователь воспроизводил локальный файл, который они загружали, если он существует (а не поток). Потоковая передача работает нормально, но если локальный файл найден, он не воспроизводится AVPlayer (это на самом деле не относится к одному из 5 файлов по причинам, выходящим за меня - нажатие на один подкаст будет воспроизводиться локально (я нахожусь в самолете режим для проверки)AVPlayer выборочно воспроизводит аудиофайлы MP3 в каталоге документов
Я считаю, что это Swift эквивалент this question, но я не был в состоянии осуществить это решение в Swift
Вот код:..
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var theURL = posts.objectAtIndex(indexPath.row).valueForKey("enclosure") as? String
var theMp3Filename = theURL!.lastPathComponent
for i in downloadedList {
if i as! String == theMp3Filename {
// If we've d/l'ed the mp3, insert the local path
theURL = documentsDirectory().stringByAppendingPathComponent(theMp3Filename)
var path: NSURL = NSURL.fileURLWithPath(theURL!)!
player = AVPlayer(URL: path)
player.play()
} else {
let podcastEpisode = AVPlayerItem(URL: NSURL(string: theURL!))
player = AVPlayer(playerItem: podcastEpisode)
player.play()
}
}
}
downloadedList
является просто массив, который я генерирую с загруженными именами файлов. Я попадаю в локальное состояние, и путь выглядит но AVPlayer обычно не работает.
Любое руководство будет оценено по достоинству.
Вы можете использовать AVAudioPlayer() – cmashinho
я начал использовать AVPlayer, потому что AVAudioPlayer не играет хорошо с потоковым содержимым. И я не хочу использовать их оба. – allocate
У вас проблема в линии пути. Используйте 'NSURL (fileURLWithPath:« путь »)', это действительно работает. – cmashinho