从本地路径播放视频

时间:2015-11-21 22:00:40

标签: ios swift

我创建了一个录制视频并将其保存到photoalbum的应用程序。但是,当我尝试使用Player库进行播放时,这似乎很简单,它不播放视频。我尝试过使用示例网址,但效果很好。为什么它不能用我的路径,即使它被保存并显示在photoalbum中。

在下面的代码中我将视频保存到特定路径,完成后我将其设置为Player库中的NSURL。有什么可以触发这个?它是在后台保存视频还是可以触发此行为?

录制视频已结束

        if sender.state == UIGestureRecognizerState.Ended {

        videoOutput.stopRecording()
        let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
        UISaveVideoAtPathToSavedPhotosAlbum("\(documentsPath)/\(randomVideoFileName).mov", nil, nil, nil)


        previewVideoView.setUrl(NSURL(fileURLWithPath: "\(documentsPath)/\(randomVideoFileName).mov"))
        previewVideoView.view.hidden = false
        previewVideoView.playFromBeginning()


    }

我甚至尝试使用此代码检查路径是否存在且存在吗?

        let filePath = "\(documentsPath)/\(randomVideoFileName).mov"
        if (NSFileManager.defaultManager().fileExistsAtPath(filePath))
        {
            print("Exists")
        }

1 个答案:

答案 0 :(得分:0)

我认为这里缺少的是你不会等到视频完全保存到相册中。尝试在回调中制作所有的setter:

videoOutput.stopRecording()之后,开始保存视频,并添加回调方法以在完成后收到提醒(有关详细信息,请参阅documentation):

UISaveVideoAtPathToSavedPhotosAlbum("\(documentsPath)/\(randomVideoFileName).mov", self, "image:didFinishSavingWithError:contextInfo:", nil)`

然后添加此方法:

func image(image: UIImage, didFinishSavingWithError error: NSErrorPointer, contextInfo:UnsafePointer<Void>) {

    if error != nil {
        // Report error to user
        return;
    }
    dispatch_async(dispatch_get_main_queue(),{

        let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString

        previewVideoView.setUrl(NSURL(fileURLWithPath: "\(documentsPath)/\(randomVideoFileName).mov"))
        previewVideoView.view.hidden = false
        previewVideoView.playFromBeginning()

    })
}