iOS獲取視頻縮略圖

首先需要導入AVFoundation庫。

UIImagePickerController

調用攝像頭拍照,攝像的時候需要用到UIImagePickerController。
使用方法:

    //實例化一個對象
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;//設置照片源類型
    imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];//設置媒體種類
    imagePicker.allowsEditing = NO; //允許編輯
    imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;//閃光燈模式
    imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;//攝像頭前置還是后置
    imagePicker.delegate = self;//設置代理
    //通過模態視圖推出頁面
    [self presentViewController:imagePicker animated:YES completion:nil];

sourceType 的三種類型分別是:
UIImagePickerControllerSourceTypeCamera 照相機
UIImagePickerControllerSourceTypePhotoLibrary 照片庫 (用戶不可刪除)
UIImagePickerControllerSourceTypeSavedPhotosAlbum 通過攝像頭保存的照片(用戶可刪除)

如果需要對拍攝的照片或視頻進行保存,需要給設置代理,然后遵守兩個協議<UIImagePickerControllerDelegate,UINavigationControllerDelegate> ,實現下面的代理方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

通常情況下,在didFinish方法里面對照片或視頻進行保存處理;在didCancel方法里dismissViewController。

獲取視頻縮略圖

這里我用的filePath是本地視頻的存儲路徑;網絡視頻URL同理。

/**
 *  獲取視頻的縮略圖方法
 *
 *  @param filePath 視頻的本地路徑
 *
 *  @return 視頻截圖
 */
- (UIImage *)getScreenShotImageFromVideoPath:(NSString *)filePath{
    
    UIImage *shotImage;
    //視頻路徑URL
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];
    
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:fileURL options:nil];
    
    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    
    gen.appliesPreferredTrackTransform = YES;
    
    CMTime time = CMTimeMakeWithSeconds(0.0, 600);
    
    NSError *error = nil;
    
    CMTime actualTime;
    
    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
    
    shotImage = [[UIImage alloc] initWithCGImage:image];
    
    CGImageRelease(image);
    
    return shotImage;
    
}

參考源碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容