如何在swift中从本地视频文件创建缩略图?
例如,视频文件路径位于以下位置:
file:///Users/Dev/Library/Developer/CoreSimulator/Devices/F33222DF-D8F0-448B-A127-C5B03C64D0DC/data/Containers/Data/Application/4BC62DBF-0108-453C-9324-5BC0E356FE24/tmp/trim.059D11E6-F0EF-43DB-9E97-CA4F1F95D6B6.MOV
谢谢。
发布于 2015-08-03 11:59:24
经过一些编辑后翻译过来:
First frame of a video using AVFoundation
var err: NSError? = nil
let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "/that/long/path"), options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
let cgImage = imgGenerator.copyCGImageAtTime(CMTimeMake(0, 1), actualTime: nil, error: &err)
// !! check the error before proceeding
let uiImage = UIImage(CGImage: cgImage)
let imageView = UIImageView(image: uiImage)
// lay out this image view, or if it already exists, set its image property to uiImage
发布于 2016-01-29 09:54:38
BaseZen的答案被翻译成了Swift 2:
import UIKit
import AVFoundation
do {
let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "/that/long/path"), 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)
let imageView = UIImageView(image: uiImage)
// lay out this image view, or if it already exists, set its image property to uiImage
} catch let error as NSError {
print("Error generating thumbnail: \(error)")
}
发布于 2017-08-10 05:44:57
为了便于理解,最好少写简单的代码。这是我在Swift (3.1...5.2)中转换的解决方案
import AVFoundation
func imagePreview(from moviePath: URL, in seconds: Double) -> UIImage? {
let timestamp = CMTime(seconds: seconds, preferredTimescale: 60)
let asset = AVURLAsset(url: moviePath)
let generator = AVAssetImageGenerator(asset: asset)
generator.appliesPreferredTrackTransform = true
guard let imageRef = try? generator.copyCGImage(at: timestamp, actualTime: nil) else {
return nil
}
return UIImage(cgImage: imageRef)
}
希望它能帮助到一些人。
https://stackoverflow.com/questions/31779150
复制相似问题