2015-05-01 2 views
1

Я пишу приложение подкаста, и я хочу, чтобы пользователь воспроизводил локальный файл, который они загружали, если он существует (а не поток). Потоковая передача работает нормально, но если локальный файл найден, он не воспроизводится 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 обычно не работает.

Любое руководство будет оценено по достоинству.

+0

Вы можете использовать AVAudioPlayer() – cmashinho

+0

я начал использовать AVPlayer, потому что AVAudioPlayer не играет хорошо с потоковым содержимым. И я не хочу использовать их оба. – allocate

+0

У вас проблема в линии пути. Используйте 'NSURL (fileURLWithPath:« путь »)', это действительно работает. – cmashinho

ответ

0

Добавить это право после того, как вы установите переменный путь для воспроизведения загруженного аудио:

let asset = AVURLAsset(URL: path) 
let playerItem = AVPlayerItem(asset: asset) 
player = AVPlayer(playerItem: playerItem) 
player.play() 
Смежные вопросы