iOS Swift:视频缩略图错误

Sam*_*Sam 5 error-handling avplayer video-thumbnails swift

我正在使用以下代码创建视频缩略图,并且在大多数情况下都可以使用。但是有时它会引发错误并且不会创建缩略图。我不明白为什么它有时不起作用。

这是我创建视频缩略图的方法:

let asset = AVAsset(URL: url)
let imageGenerator = AVAssetImageGenerator(asset: asset)
imageGenerator.appliesPreferredTrackTransform = true

do {
    let cgImage = try imgGenerator.copyCGImageAtTime(CMTimeMake(1, 30), actualTime: nil)
    let uiImage = UIImage(CGImage: cgImage)
    imageview.image = uiImage  
}
catch let error as NSError
{
    print("Image generation failed with error \(error)")
}
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下有效,当它不起作用时会引发此错误:

Error generating thumbnail: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x17658520 {Error Domain=NSOSStatusErrorDomain Code=-12792 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-12792)}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它会抛出这个错误并且没有找到堆栈溢出的任何解决方案,即使其他人面临同样的问题。

小智 0

尝试这个。

func generateThumbnail(path: URL) -> UIImage? {
            do {
                let asset = AVURLAsset(url: path, options: nil)
                let imgGenerator = AVAssetImageGenerator(asset: asset)
                imgGenerator.appliesPreferredTrackTransform = true
                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.localizedDescription)")
                return nil
            }
        }
Run Code Online (Sandbox Code Playgroud)