AVPlayer有选择地在文件目录中播放MP3音频文件

时间:2015-05-01 19:29:06

标签: swift avplayer

我正在编写一个播客应用,我希望用户播放他们已经下载的本地文件(如果它存在的话)(而不是流式传输)。流式传输工作正常,但是如果找到了本地文件,它就不能被AVPlayer播放了(由于我之外的原因,大约5个文件中的一个实际上不是这样 - 点击一个播客将在本地播放(I& #39; m在飞机模式下验证)。

我相信这是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通常不起作用。

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在设置路径变量以播放下载的音频后立即添加:

let asset = AVURLAsset(URL: path)
let playerItem = AVPlayerItem(asset: asset)
player = AVPlayer(playerItem: playerItem)
player.play()