来自特定帧的视频的照片框架图像

时间:2015-09-01 08:02:21

标签: ios objective-c swift video photos

我已经制作了一个库集合视图,其中包含我从Photos框架中获取的视频,我使用缩略图使用以下方法显示所有不同的视频

func requestImageForAsset(_ asset: PHAsset!, targetSize targetSize: CGSize, contentMode contentMode: PHImageContentMode, options options: PHImageRequestOptions!, resultHandler resultHandler: ((UIImage!, [NSObject : AnyObject]!) -> Void)!) -> PHImageRequestID

工作正常。 但我的视频总是以黑框开头,因此所有缩略图都是黑色的。我可以偏移拍摄快照图像的帧吗?

2 个答案:

答案 0 :(得分:12)

这是我在我的项目中使用的代码,它对我来说就像一个魅力

book[0].title

上述功能将在视频的1秒处返回图像

这是传递视频的assetUrl以获取缩略图的方式

func generateThumnail(url: URL) -> UIImage? {
    let asset = AVAsset(url: url)
    let assetImgGenerate = AVAssetImageGenerator(asset: asset)
    assetImgGenerate.appliesPreferredTrackTransform = true
    assetImgGenerate.maximumSize = CGSize(width: 100, height: 100)
    let time = CMTimeMake(1, 30)

    if let img = try? assetImgGenerate.copyCGImage(at: time, actualTime: nil) {
        return UIImage(cgImage: img)
    }
    return nil
}

答案 1 :(得分:2)

我认为您需要查看AVFoundation库来解码视频并抓住您想要的帧。

要更新库中的占位符,查看文档,您似乎需要创建PHAssetChangeRequest并在其上设置placeholderForCreatedAsset属性。然后,您需要请求更改块中的库执行更改。

注意:如果这仅供您使用,您可以在照片中设置占位符框架,并将其反映在您的应用中。