Swift 提取视频第一帧并保存为图片
你可以使用 AVFoundation 框架来提取视频文件的第一帧并保存为一个图片文件。下面是一个使用 Swift 编写的示例代码:
import AVFoundation
import UIKit
func extractFirstFrame(from videoURL: URL, completion: @escaping (UIImage?) -> Void) {
// 创建 AVAsset 实例
let asset = AVAsset(url: videoURL)
// 创建 AVAssetImageGenerator 实例
let imageGenerator = AVAssetImageGenerator(asset: asset)
imageGenerator.appliesPreferredTrackTransform = true
// 获取视频第一帧的时间
let time = CMTime(value: 0, timescale: 1)
// 生成图片
imageGenerator.generateCGImagesAsynchronously(forTimes: [NSValue(time: time)]) { (_, image, _, _, _) in
if let cgImage = image {
let uiImage = UIImage(cgImage: cgImage)
completion(uiImage)
} else {
completion(nil)
}
}
}
// 使用示例
let videoURL = URL(fileURLWithPath: 'path_to_video_file')
extractFirstFrame(from: videoURL) { image in
if let image = image {
// 将图片保存到文件
let fileManager = FileManager.default
let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let imageURL = documentsDirectory.appendingPathComponent('first_frame.jpg')
if let imageData = image.jpegData(compressionQuality: 1.0) {
try? imageData.write(to: imageURL)
}
}
}
在上述代码中,extractFirstFrame(from:) 函数接受一个视频文件的 URL,并使用 AVAssetImageGenerator 从视频中提取第一帧图像。提取的图像将通过回调函数返回。你可以在回调函数中将图像保存为一个文件,如示例中所示。请记得替换 videoURL 变量为你实际的视频文件 URL。
原文地址: https://www.cveoy.top/t/topic/qgcF 著作权归作者所有。请勿转载和采集!