你可以使用 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。

Swift 提取视频第一帧并保存为图片

原文地址: https://www.cveoy.top/t/topic/qgcF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录