首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在swift中从本地视频创建缩略图

在swift中从本地视频创建缩略图
EN

Stack Overflow用户
提问于 2015-08-03 11:49:46
回答 5查看 41.8K关注 0票数 49

如何在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

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-08-03 11:59:24

经过一些编辑后翻译过来:

First frame of a video using AVFoundation

代码语言:javascript
复制
    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
票数 69
EN

Stack Overflow用户

发布于 2016-01-29 09:54:38

BaseZen的答案被翻译成了Swift 2:

代码语言:javascript
复制
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)")
}
票数 12
EN

Stack Overflow用户

发布于 2017-08-10 05:44:57

为了便于理解,最好少写简单的代码。这是我在Swift (3.1...5.2)中转换的解决方案

代码语言:javascript
复制
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)
}

希望它能帮助到一些人。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31779150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档