我创建了一个录制视频并将其保存到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")
}
答案 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()
})
}