如何访问从URl下载的已保存文件路径

时间:2018-01-15 04:46:01

标签: swift avplayer

我已使用此过程从链接下载文件。现在我想要文件路径访问此视频并使用APPlayer播放:

 @IBAction func btnplayClicked(sender: AnyObject) {

    let videoImageUrl = "https://devimages-cdn.apple.com/samplecode/avfoundationMedia/AVFoundationQueuePlayer_HLS2/master.m3u8"
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
                let url = NSURL(string: videoImageUrl);
                let urlData = NSData(contentsOfURL: url!);
                if(urlData != nil)
                {
                    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0];
                    let filePath="\(documentsPath)/video.mp4";
                    dispatch_async(dispatch_get_main_queue(), {
                        urlData?.writeToFile(filePath, atomically: true);
                        PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                            PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(NSURL(fileURLWithPath: filePath))
                        }) { completed, error in
                            if completed {
                                print("Video is saved!")
 if let path = NSBundle.mainBundle().pathForResource("video", ofType: ".mp4")
                                        {
                                            let apath = NSURL(fileURLWithPath: path)
                                            let video = AVPlayer(URL: apath)
                                            let videoPlayer = AVPlayerViewController()
                                            videoPlayer.player = video
                                           self.presentViewController(videoPlayer, animated: true, completion: {
                                                video.play()
                                            })
                                        }
                            }
                        }
                    })
                }
   })
}

视频已下载,我可以在gallery.But AVPlayer上播放视频。但我在这里做错了什么..?

2 个答案:

答案 0 :(得分:1)

您是否尝试直接从缓存路径加载AVPlayer?这样做:

if completed {
    let video = AVPlayer(URL: NSURL(fileURLWithPath: filePath))
    let videoPlayer = AVPlayerViewController()
    videoPlayer.player = video
    self.presentViewController(videoPlayer, animated: true, completion: {
        video.play()
    })
}

答案 1 :(得分:1)

AS iOS希腊语告诉你正在访问错误的路径,你可以用这种方法做到:

if completed {


dispatch_async(dispatch_get_main_queue(), {
                                        // Call UI related operations
let apath = NSURL(fileURLWithPath: filePath)
let video = AVPlayer(URL: apath)
let videoPlayer = AVPlayerViewController()
 videoPlayer.player = video
self.presentViewController(videoPlayer, animated: true, completion: {
 video.play()
 })
 })
}