Swift 3:来自视频的缩略图

时间:2017-04-26 15:30:55

标签: ios swift video avfoundation thumbnails

我需要在Swift 3中的设备上本地存储的视频中创建一个缩略图。我有以下代码:

func fetchFirstFrameOf(videoPath urlString: String) -> UIImage? {
    let filePath = URL(fileURLWithPath: urlString).absoluteURL

    let asset = AVURLAsset(url: filePath, options: nil)
    let imgGenerator = AVAssetImageGenerator(asset: asset)
    imgGenerator.appliesPreferredTrackTransform = false

    do {
        let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime: nil)
        let thumbnail = UIImage(cgImage: cgImage)

        return thumbnail

    } catch let error {
        print("*** Error generating thumbnail: \(error)")
        return nil
    }
}

现在,当我拍摄视频并保存时,此功能正常。但是当我稍后重新启动应用程序时,不会显示缩略图并且会抛出以下错误:

  

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

我尝试像这样初始化文件路径:URL(字符串:文件路径),但也没有运气。

拍摄视频后即可使用。直到你重新打开应用程序然后再次失败...

1 个答案:

答案 0 :(得分:1)

所以我认为问题在于我试图访问一个临时地址(url中的私有和tmp应该会让我失意:s)

结束创建视频并将其移至文档目录。