iOS獲取視頻截圖&縮略圖

寫在開篇

周六需要測試各類視頻源和各種方法獲取縮略圖的時間,于是寫個小demo,簡單查了下幾個相關(guān)帖子,不知道是不是我查詢的關(guān)鍵詞有問題,結(jié)果太雜,有用的呢排版感覺又不夠友好,自己整理完就覺得還是發(fā)出來一下吧,畢竟多一份參考也是好的。話不多說。上代碼。

獲取視頻截圖&縮略圖

#define k_THUMBNAIL_IMG_WIDTH  100//縮略圖及cell大小
#define k_FPS 1//一秒想取多少幀

//這本來是個異步調(diào)用,但寫成這種方便大家看和復(fù)制來直接測試
- (UIImage*)getVideoThumbnailWithUrl:(NSURL*)videoUrl  second:(CGFloat)second
{
    if (!videoUrl)
    {
        NSLog(@"WARNING:videoUrl為空");
        return nil;
    }
    AVURLAsset *urlSet = [AVURLAsset assetWithURL:videoUrl];
    AVAssetImageGenerator *imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:urlSet];
    imageGenerator.appliesPreferredTrackTransform = YES;
    imageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;
    
    /*
     如果不需要獲取縮略圖,就設(shè)置為NO,如果需要獲取縮略圖,則maximumSize為獲取的最大尺寸。
     以BBC為例,getThumbnail = NO時,打印寬高數(shù)據(jù)為:1920*1072。
     getThumbnail = YES時,maximumSize為100*100。打印寬高數(shù)據(jù)為:100*55.
     注:不乘[UIScreen mainScreen].scale,會發(fā)現(xiàn)縮略圖在100*100很虛。
     */
    BOOL getThumbnail = YES;
    if (getThumbnail)
    {
        CGFloat width = [UIScreen mainScreen].scale * k_THUMBNAIL_IMG_WIDTH;
        imageGenerator.maximumSize =  CGSizeMake(width, width);
    }
    NSError *error = nil;
    CMTime time = CMTimeMake(second,k_FPS);
    CMTime actucalTime;
    CGImageRef cgImage = [imageGenerator copyCGImageAtTime:time actualTime:&actucalTime error:&error];
    if (error) {
        NSLog(@"ERROR:獲取視頻圖片失敗,%@",error.domain);
    }
    CMTimeShow(actucalTime);
    UIImage *image = [UIImage imageWithCGImage:cgImage];
    NSLog(@"imageWidth=%f,imageHeight=%f",image.size.width,image.size.height);
    CGImageRelease(cgImage);
    return image;
}

需要說明的都大概寫了注釋,寫了個demo,點擊按鈕后,會將對應(yīng)片源每秒取k_FPS幀圖片,順序展示在collectionview上。
稍后會把demo發(fā)上來,有問題可以留言或者私信討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容