文件文件路径在swift中无法访问

时间:2016-07-07 12:18:41

标签: swift documents video-thumbnails

我目前正在开发一个小型的快速应用程序,并且我将一些视频记录存储在应用程序的文档文件夹中。我想稍后检索这些。我已经有一个像这样的文件位置数组:

file:///private/var/mobile/Containers/Data/Application/6C462C4E-05E2-436F-B2E6-F6D9AAAC9361/Documents/videorecords/196F9A75-28C4-4B65-A06B-6111AEF85F01.mov

现在我想使用这样的文件位置来创建第一帧的缩略图,并使用以下代码将其连接到我的imageview:

func createVideoStills() {
    for video in directoryContents {
        print("\(video)")
        do {
            let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "\(video)"), options: nil)
            let imgGenerator = AVAssetImageGenerator(asset: asset)
            imgGenerator.appliesPreferredTrackTransform = true
            let cgImage = try imgGenerator.copyCGImageAtTime(CMTimeMake(0, 1), actualTime: nil)
            let uiImage = UIImage(CGImage: cgImage)
            videoCell.imageView = UIImageView(image: uiImage)
            //let imageView = UIImageView(image: uiImage)
        } catch let error as NSError {
            print("Error generating thumbnail: \(error)")
        }
    }
}

第一次印刷给我一条如上所述的路径。但是AVURLAsset并不喜欢这条路径,因为它会吐出以下错误:

  

生成缩略图时出错:错误域= NSURLErrorDomain代码= -1100   "在此服务器上找不到请求的URL。"   UserInfo = {NSLocalizedDescription =找不到请求的URL   此服务器。,NSUnderlyingError = 0x14ee29170 {错误   Domain = NSPOSIXErrorDomain Code = 2"没有这样的文件或目录"}}

这是奇怪的,因为它就在那里。关于如何解决/解决这个问题的任何解决方案?

亲切的问候,

的Wouter

1 个答案:

答案 0 :(得分:1)

print("\(video)")的输出不是文件路径,而是文件网址的字符串表示形式。您需要使用init(string:)而不是init(fileURLWithPath:)的{​​{1}}。

看看你得到了什么:

NSURL

(不必要的字符串插值会产生一些没有错误的意外结果 - 比如获取“Optional(...)”,所以你应该避免。)