首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift4.2从视频抓取屏幕截图

Swift4.2从视频抓取屏幕截图
EN

Stack Overflow用户
提问于 2018-10-02 15:05:13
回答 1查看 991关注 0票数 0

在Swift 4.2中,我试图从视频中抓取截图

代码语言:javascript
复制
func thumbnailImageFor(fileUrl:URL) -> UIImage? {

        let asset = AVAsset(url: fileUrl)
        let assetImgGenerate = AVAssetImageGenerator(asset: asset)
        assetImgGenerate.appliesPreferredTrackTransform = true

        let time = CMTimeMakeWithSeconds(1.0, preferredTimescale: 600)
        do {
            let img = try assetImgGenerate.copyCGImage(at: time, actualTime: nil)
            let thumbnail = UIImage(cgImage: img)
            return thumbnail
        } catch {
            print(error)
            return nil
        }   
 }

但获得错误:

错误Domain=AVFoundationErrorDomain代码=-11800“操作无法完成”UserInfo={NSLocalizedFailureReason=An未知错误发生(-12792),NSLocalizedDescription=The操作无法完成,NSUnderlyingError=0x600000f46580 {Error Domain=NSOSStatusErrorDomain代码=-12792 "(null)"}}

视频网址: movies%2F8A61AC4E-4A08-4EC7-BC78-A5D861BE48C5.mov?alt=media&token=8906971d-59d7-4880-988e-135615c10f22

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 15:23:54

我认为这可能与电影的文件类型有关,因为这样做是可行的:

代码语言:javascript
复制
import UIKit
import AVFoundation

func thumbnailImageFor(fileUrl:URL) -> UIImage? {

    let video = AVURLAsset(url: fileUrl, options: [:])
    let assetImgGenerate = AVAssetImageGenerator(asset: video)
    assetImgGenerate.appliesPreferredTrackTransform = true

    let videoDuration:CMTime = video.duration
    let durationInSeconds:Float64 = CMTimeGetSeconds(videoDuration)

    let numerator = Int64(1)
    let denominator = videoDuration.timescale
    let time = CMTimeMake(value: numerator, timescale: denominator)

    do {
        let img = try assetImgGenerate.copyCGImage(at: time, actualTime: nil)
        let thumbnail = UIImage(cgImage: img)
        return thumbnail
    } catch {
        print(error)
        return nil
    }
}

let url: URL = URL(string: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4")!

let image: UIImage? = thumbnailImageFor(fileUrl: url)
print("Image: \(image)")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52611157

复制
相关文章

相似问题

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