美文网首页关爱小白
ios 获取视频帧图片/保存视频到本地

ios 获取视频帧图片/保存视频到本地

作者: thinkwick | 来源:发表于2017-11-03 15:29 被阅读40次

    获取视频帧图片

    - (UIImage*)thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];

    NSParameterAssert(asset);

    AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset];

    assetImageGenerator.appliesPreferredTrackTransform = YES;

    assetImageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;

    CGImageRef thumbnailImageRef = NULL;

    CFTimeInterval thumbnailImageTime = time;

    NSError *thumbnailImageGenerationError = nil;

    thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60)actualTime:NULL error:&thumbnailImageGenerationError];

    if(!thumbnailImageRef)

    NSLog(@"thumbnailImageGenerationError %@",thumbnailImageGenerationError);

    UIImage*thumbnailImage = thumbnailImageRef ? [[UIImage alloc]initWithCGImage: thumbnailImageRef] : nil;

    return thumbnailImage;

    }

    保存视频到本地

    - (void)saveVideo:(NSString *)videoPath{

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(videoPath)) {

    //保存相册核心代码

    UISaveVideoAtPathToSavedPhotosAlbum(videoPath, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);

    }

    });

    }

    #pragma mark 视频保存完毕的回调

    - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInf{

    if (error) {

    [SVProgressHUD showErrorWithStatus:@"保存失败!"];

    [SVProgressHUD dismiss];

    NSLog(@"保存视频过程中发生错误,错误信息:%@",error.localizedDescription);

    }else{

    [SVProgressHUD dismiss];

    [SVProgressHUD showSuccessWithStatus:@"保存成功!"];

    int64_t delayInSeconds = 1.0;      // 延迟的时间

    /*

    *@parameter 1,时间参照,从此刻开始计时

    *@parameter 2,延时多久,此处为秒级,还有纳秒等。10ull * NSEC_PER_MSEC

    */

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);

    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

    // do something

    [SVProgressHUD dismiss];

    });

    }

    }

    相关文章

      网友评论

        本文标题:ios 获取视频帧图片/保存视频到本地

        本文链接:https://www.haomeiwen.com/subject/zaptmxtx.html