ios - 从 iPhone SDK 中的视频 url 创建缩略图

标签 ios objective-c video thumbnails

我正在尝试从视频网址获取缩略图。视频是 m3u8 格式的流 (HLS)。 我已经从 MPMoviePlayerController 尝试过 requestThumbnailImagesAtTimes,但是没有用。有没有人能解决这个问题?如果是的话,你是怎么做到的?

最佳答案

如果你不想使用MPMoviePlayerController,你可以这样做:

    AVAsset *asset = [AVAsset assetWithURL:sourceURL];
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
    CMTime time = CMTimeMake(1, 1);
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
    UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);  // CGImageRef won't be released by ARC

这是一个 Swift 中的例子:

func thumbnail(sourceURL sourceURL:NSURL) -> UIImage {
    let asset = AVAsset(URL: sourceURL)
    let imageGenerator = AVAssetImageGenerator(asset: asset)
    let time = CMTime(seconds: 1, preferredTimescale: 1)

    do {
        let imageRef = try imageGenerator.copyCGImageAtTime(time, actualTime: nil)
        return UIImage(CGImage: imageRef)
    } catch {
        print(error)
        return UIImage(named: "some generic thumbnail")!
    }
}

MPMoviePlayerController 相比,我更喜欢使用 AVAssetImageGenerator,因为它是线程安全的,并且一次可以实例化多个。

关于ios - 从 iPhone SDK 中的视频 url 创建缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7501413/

相关文章:

ios - Bitcode_strip 在 Xcode 8 中失败

c - 强制 LibAV 中的全局 header

javascript - 想从服务器端清除 UIWebView 缓存

ios - 在 iOS 开发中,您可以拥有两个版本的 .nib 文件并使用各自的方案编译每个版本吗?

ios - 工作区中项目之间的Xcode共享运行脚本构建阶段

ios - 如何告诉 UITableView 自调整单元格的高度即将改变?

iPhone Core Data 如何在更改数据模型后更新 NSManagedObjects .h & .m

video - 如何使用 rm/rmvb 支持编译 ffmpeg?

php - 如何编写PHP脚本来下载YouTube视频?

ios - 让uiview跳升20px的所有可能场景有哪些