在很多视频软件中,基本都会提供跟随鼠标进度显示画面,裁剪视频时预览关键帧等功能,实际上,这种类似的功能都是AVAssetImageGenerator的功劳。 属性 /* 初始化 AVAssetImageGenerator的AVAsset实例。 */ open var maximumSize: CGSize /* */ open var apertureMode: AVAssetImageGenerator.ApertureMode? , CMTime, AVAssetImageGenerator.Result, Error?) -> Void 应用场景: 视频帧预览 实际上就是基于AVAssetImageGenerator实现的功能。
11452136-6e6ea11700c24130.png 截取视频帧 截取视频一帧关键代码如下: AVAssetImageGenerator *generator = [[AVAssetImageGenerator AVURLAssetalloc]initWithURL:videoUrloptions:nil]; int64_t scale = asset.duration.timescale; AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; generator.appliesPreferredTrackTransform
#import "VideoHelper.h" #import <AVFoundation/AVAsset.h> #import <AVFoundation/AVAssetImageGenerator.h alloc] initWithURL:[NSURL URLWithString:url] options:nil]; NSParameterAssert(asset); AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset]; assetImageGenerator.appliesPreferredTrackTransform
import AVFoundation.AVAssetDownloadTask import AVFoundation.AVAssetExportSession import AVFoundation.AVAssetImageGenerator AVAnimation动画类 AVAsset资产类可通过这个类获得图片、文件、媒体库 AVAssetExportSession资源导出会话:是一个通过资源文件对象去创建一个指定预设的输出的转码内容会话 AVAssetImageGenerator
videoPath { AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoPath options:nil]; AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset]; gen.appliesPreferredTrackTransform
import AVFoundation.AVAssetDownloadTask import AVFoundation.AVAssetExportSession import AVFoundation.AVAssetImageGenerator
// 读取视频资源 let videoAsset = AVURLAsset(url: videoURL) // 创建视频资源解析器 let videoProcessor = AVAssetImageGenerator
你可以使用 addOutput: 将一个或多个 AVAssetReaderOutput 添加到 AVAssetReader 对象中来读取资产的媒体数据 AVAssetTrack 媒体资产轨道对象 AVAssetImageGenerator
duration: duration, type: .video) } var saved = false let assetImgGenerate = AVAssetImageGenerator