视频截图代码
// 创建视频资源对象
AVAsset *asset = [AVAsset assetWithURL:self.mpc.contentURL];
// 视频图片生成器对象
AVAssetImageGenerator *generator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
// 截图
// value 第几帧
// timescale 每秒播放多少帧
// CMTime time = CMTimeMake(<#int64_t value#>, int32_t timescale)
// currentPlaybackTime 当前视频播放时间,单位是s
// asset.duration 视频的持续时间
CMTime time = CMTimeMakeWithSeconds(self.mpc.currentPlaybackTime,asset.duration.timescale);
NSValue *timeValue = [NSValue valueWithCMTime:time];
[generator generateCGImagesAsynchronouslyForTimes:@[timeValue] completionHandler:^(CMTime requestedTime, CGImageRef image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error) {
// 当不是在主线程中更新UIImageView 图片的时候,会有一个时间延迟
// NSLog(@"%@",[NSThread currentThread]);
NSLog(@"截取图片成功了");
// 异步任务: 不阻塞当前线程的任务
// dispatch_sync(dispatch_get_main_queue(), ^{
//
// self.imageView.image = [UIImage imageWithCGImage:image];
// });
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = [UIImage imageWithCGImage:image];
});
//
}];
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步