在我的代码中,我必须使用URLWithString播放流(HLS)视频和fileURLWithPath播放本地视频.
这两种方法有什么区别?我应该如何使用单一方法播放两个视频.
此外,我需要在HSL视频结束时将最后一帧显示为静止图像.它结束时现在显示空白屏幕.我该怎么做到这一点?
我正在下载一个视频,感谢downloadTaskWithURL,我用这段代码将它保存到我的画廊:
func saveVideoBis(fileStringURL:String){
print("saveVideoBis");
let url = NSURL(string: fileStringURL);
(NSURLSession.sharedSession().downloadTaskWithURL(url!) { (location:NSURL?, r:NSURLResponse?, e:NSError?) -> Void in
let mgr = NSFileManager.defaultManager()
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0];
print(documentsPath);
let destination = NSURL(string: NSString(format: "%@/%@", documentsPath, url!.lastPathComponent!) as String);
print(destination);
try? mgr.moveItemAtPath(location!.path!, toPath: destination!.path!)
PHPhotoLibrary.requestAuthorization({ (a:PHAuthorizationStatus) -> Void in
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(destination!);
}) { completed, error in
if completed {
print(error);
print("Video is saved!");
self.sendNotification();
}
}
})
}).resume()
}
Run Code Online (Sandbox Code Playgroud)
它在我的模拟器上工作得非常好,但在我的iPad上,即使print("Video is saved!");显示,视频也不会保存.你知道为什么吗?
我的控制台中也出现了该消息
无法从文件创建数据(null)
我正在尝试从文档目录中FileManager.default.removeItem删除文件但不删除模拟器上的文件.这是我的代码:
if let dir = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
do{
let path = dir.appendingPathComponent(file).absoluteString
do{
try FileManager.default.removeItem(atPath:path)
}catch{
print(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我总是失败.你们中的任何人都知道它失败的原因
在Swift的URL类中,有.standardized和.absoluteURL属性(.standardizedURL和.absoluteURL,.URLByStandardizingPath在Objective-C的NSURL中)。也有.standardizedFileURL。
我不知道所有这些之间有什么区别,但是必须有一个,因为它们提供了所有这些,对吧?我的意思是很明显,.standardizedFileURL的意思是仅处理文件URL,但是除此之外(例如,如果所有都在文件URL上调用),有什么区别?
从上面链接的文档中:
标准化的
返回一个URL,该URL的任何实例都从其路径中删除“ ..”或“。”。
绝对网址
返回绝对URL。
讨论区
如果URL本身是绝对的,则将返回self。
标准化的文件URL
标准化文件URL的路径。
讨论区
如果
is?File?URL是false,则此方法返回self。
标准化网址
URL副本,其中包含“ ..”或“。”的任何实例 从其路径中删除。(只读)
讨论区
此属性包含一个新
NSURL对象,该对象使用接收者的路径(带有".."或"."删除的任何实例)初始化。如果接收方不符合RFC 1808,则此属性包含nil。
绝对网址
指向与接收者相同资源的绝对URL。(只读)
讨论区
如果URL已经是绝对的,则此属性包含接收者的副本。根据RFC 1808执行解析。
URL通过标准化路径
使用绝对路径指向与原始URL相同资源的URL。(只读)
讨论区
该属性仅适用于带有以下文件的URL:路径方案。对于所有其他URL,它将返回原始URL的副本。
像一样
string?By?Standardizing?Path,此属性可以在提供的URL中进行以下更改:使用扩展初始代字号表达式
string?By?Expanding?Tilde?In?Path。将空组件和对当前目录的引用(即序列“ //”和“ /./”)减少为单个路径分隔符。仅在绝对路径中,如果可能的话,使用string?By?Resolving?Symlinks?In?Path,将对父目录(即组件“ ..”)的引用解析为真实的父目录,该引用会查询文件系统以解析每个潜在的符号链接。在相对路径中,由于无法解析符号链接,因此将保留对父目录的引用。如果结果仍然指示现有文件或目录(请咨询文件系统进行检查),则从路径中删除“ / private”的初始组件。
请注意,此属性包含的路径中可能仍包含符号链接组件。还要注意,此属性仅适用于文件路径(例如,URL的字符串表示形式)。