寫在前面
喜歡AVFoundation資料的同學(xué)可以關(guān)注我的專題:《AVFoundation》專輯
也可以關(guān)注我的簡書賬號
正文
AVAssetImageGenerator
提供asset
的縮略圖或預(yù)覽圖像,該功能與Playback
無關(guān)笤昨。
數(shù)據(jù)結(jié)構(gòu)
AVAssetImageGenerator
數(shù)據(jù)結(jié)構(gòu)如下:
AVAssetImageGeneratorApertureMode
光圈模式的類型桑包。
主要包括如下選項:
AVF_EXPORT AVAssetImageGeneratorApertureMode const AVAssetImageGeneratorApertureModeCleanAperture NS_AVAILABLE(10_7, 4_0);
屬性名 | AVAssetImageGeneratorApertureModeCleanAperture |
---|---|
解釋 | 將應(yīng)用像素長寬比和透明光圈杰妓。 |
備注 | 圖像的clean aperture 是視頻區(qū)域街氢,由于沒有由信號編碼引起的過渡artifacts 摆昧。 |
AVF_EXPORT AVAssetImageGeneratorApertureMode const AVAssetImageGeneratorApertureModeProductionAperture NS_AVAILABLE(10_7, 4_0);
屬性名 | AVAssetImageGeneratorApertureModeProductionAperture |
---|---|
解釋 | 僅應(yīng)用像素長寬比诚卸。 |
備注 | 圖像不會裁剪到透明的光圈區(qū)域界酒,但會根據(jù)像素長寬比進行縮放纠屋。如果要查看視頻中的所有像素(包括邊緣),請使用此選項盾计。 |
AVF_EXPORT AVAssetImageGeneratorApertureMode const AVAssetImageGeneratorApertureModeEncodedPixels NS_AVAILABLE(10_7, 4_0);
屬性名 | AVAssetImageGeneratorApertureModeEncodedPixels |
---|---|
解釋 | 不會應(yīng)用像素長寬比和透明光圈售担。 |
備注 | 圖像不會被裁剪到透明的光圈區(qū)域,并且不會根據(jù)像素長寬比進行縮放署辉。顯示圖像描述的編碼尺寸族铆。 |
AVAssetImageGeneratorResult
結(jié)果有如下三種選項:
- AVAssetImageGeneratorSucceeded(成功)
- AVAssetImageGeneratorFailed(失敗)
- AVAssetImageGeneratorCancelled(取消)
AVAssetImageGenerator
@property (nonatomic, readonly) AVAsset *asset NS_AVAILABLE(10_9, 6_0);
指示初始化 AVAssetImageGenerator
的AVAsset
實例哭尝。
@property (nonatomic) BOOL appliesPreferredTrackTransform;
指定在從asset
中提取圖像時是否應(yīng)用track
的preferredTransform
(AVAssetTrack preferredTransform
中會有詳細說明)哥攘。
默認為NO
。僅支持旋轉(zhuǎn)90
度材鹦,180
度或270
度逝淹。
@property (nonatomic) CGSize maximumSize;
指定生成的圖像的最大尺寸。默認(CGSizeZero
)是asset
的未縮放尺寸桶唐。
AVAssetImageGenerator
將縮放圖像栅葡,使其適合定義的邊界框。
圖像永遠不會放大尤泽⌒来兀縮放圖像的寬高比將由apertureMode
屬性定義。
@property (nonatomic, readonly, nullable) id <AVVideoCompositing> customVideoCompositor NS_AVAILABLE(10_9, 7_0);
表示使用的自定義視頻合成器實例(如果有的話)
@property (nonatomic) CMTime requestedTimeToleranceBefore NS_AVAILABLE(10_7, 5_0);
@property (nonatomic) CMTime requestedTimeToleranceAfter NS_AVAILABLE(10_7, 5_0);
生成的圖像的實際時間將在[requestedTime-toleranceBefore坯约,requestedTime + toleranceAfter]
范圍內(nèi)熊咽,并且可能與請求的效率時間不同。
通過kCMTimeZero for toleranceBefore
和toleranceAfter
請求幀精確圖像生成;這可能會導(dǎo)致額外的解碼延遲闹丐。
默認值是kCMTimePositiveInfinity
横殴。
+ (instancetype)assetImageGeneratorWithAsset:(AVAsset *)asset;
函數(shù)名 | assetImageGeneratorWithAsset: |
---|---|
解釋 | 返回AVAssetImageGenerator 的實例以與指定的asset 一起使用。 |
參數(shù) |
asset :將從中提取圖像的 asset 卿拴。 |
返回值 | 返回AVAssetImageGenerator 的一個實例 |
備注 | 即使asset 在初始化時沒有視覺tracks 衫仑,該方法也可能成功梨与。客戶端可能希望測試資產(chǎn)是否具有具有視覺特征的軌道 - [AVAsset tracksWithMediaCharacteristic:] 。注意惑畴,屬于 AVAsset 蛋欣,AVMutableComposition 或AVMutableMovie 的可變子類的asset 可能會在初始化關(guān)聯(lián)的AVAssetImageGenerator 后獲得可視軌跡航徙。但是如贷,如果在生成圖像時發(fā)生 asset 突變,則圖像生成的結(jié)果是不確定的到踏。AVAssetImageGenerator 將使用默認啟用的視頻軌道來生成圖像杠袱。 |
- (instancetype)initWithAsset:(AVAsset *)asset NS_DESIGNATED_INITIALIZER;
函數(shù)名 | initWithAsset: |
---|---|
解釋 | 初始化AVAssetImageGenerator 的實例以與指定的asset 一起使用。 |
參數(shù) |
asset :將從中提取圖像的 asset 窝稿。 |
返回值 | 返回一個AVAssetImageGenerator 的實例 |
備注 | 即使asset 在初始化時沒有視覺軌跡楣富,該方法也可能成功。客戶端可能希望通過以下方式測試 asset 是否具有具有視覺特征的軌跡- [AVAsset tracksWithMediaCharacteristic:] 伴榔。注意纹蝴,屬于 AVAsset ,AVMutableComposition 或AVMutableMovie 的可變子類的asset 可能會在初始化關(guān)聯(lián)的AVAssetImageGenerator 后獲得可視軌跡踪少。但是塘安,如果在生成圖像時發(fā)生 asset 突變,則圖像生成的結(jié)果是不確定的援奢。AVAssetImageGenerator 將使用默認啟用的視頻軌道來生成圖像兼犯。 |
- (nullable CGImageRef)copyCGImageAtTime:(CMTime)requestedTime actualTime:(nullable CMTime *)actualTime error:(NSError * _Nullable * _Nullable)outError CF_RETURNS_RETAINED;
函數(shù)名 | copyCGImageAtTime:actualTime:error: |
---|---|
解釋 | 返回指定時間或附近的asset 的CFRetained CGImageRef 。 |
參數(shù) |
requestedTime :創(chuàng)建 asset 圖像的時間集漾。actualTime :指向 CMTime 的指針切黔,用于接收實際生成圖像的時間。在此信息中具篇,傳遞 NULL 纬霞。outError :如果此方法返回 NULL ,則描述失敗原因的錯誤對象驱显。 |
返回值 | 返回CGImageRef 類型的對象 |
備注 | 同步返回CGImage 险领。所有權(quán)遵循創(chuàng)建規(guī)則。 |
typedef void (^AVAssetImageGeneratorCompletionHandler)(CMTime requestedTime, CGImageRef _Nullable image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError * _Nullable error);
如果結(jié)果是AVAssetImageGeneratorFailed
秒紧,則錯誤對象指示失敗的原因绢陌。
- (void)generateCGImagesAsynchronouslyForTimes:(NSArray<NSValue *> *)requestedTimes completionHandler:(AVAssetImageGeneratorCompletionHandler)handler;
函數(shù)名 | generateCGImagesAsynchronouslyForTimes:completionHandler: |
---|---|
解釋 | 返回指定時間或附近的資產(chǎn)的一系列CGImageRefs 。 |
參數(shù) |
requestedTimes :NSValues 的NSArray 熔恢,每個都包含CMTime 脐湾,指定請求圖像的asset 時間。handler :圖像請求完成時將調(diào)用的 block 叙淌。 |
備注 | 采用有效的“批處理模式”秤掌,按時間順序獲取圖像愁铺。 客戶端將在 requestedTimes 中為每個請求的時間收到一個處理程序回調(diào)。對生成器屬性的更改(快照行為闻鉴,最大大小等...)不會影響未完成的異步映像生成請求茵乱。 生成的圖像不會保留。如果客戶希望在完成處理程序返回后保留圖像孟岛,則客戶端應(yīng)保留該圖像瓶竭。 |
- (void)cancelAllCGImageGeneration;
函數(shù)名 | cancelAllCGImageGeneration |
---|---|
解釋 | 取消所有未完成的圖像生成請求。 |
備注 | 在以前每次調(diào)用-generateCGImagesAsynchronouslyForTimes:completionHandler: 為尚未提供圖像的每個圖像時間調(diào)用帶有AVAssetImageGeneratorCancelled 的處理程序block 渠羞。 |
上一章 | 目錄 | 下一章 |
---|