视频截图

作者: 帅哥_刷哥 | 来源:发表于2016-04-06 09:44 被阅读608次

1.iOS9.0以前的截图

1.1框架

#import <MediaPlayer/MediaPlayer.h>
类:MPMoviePlayerController

1.1步骤

1.注册截屏通知
2.调用截屏方法(发出截图请求)
3.在通知中获得截取的图片

1.2使用

// 监听截图通知
-(void)registerNotification{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(thumbnailImageRequestDidFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];
}
// 截图的通知响应方法
- (void)thumbnailImageRequestDidFinishNotification:(NSNotification *)notication
{
    UIImage *image = notication.userInfo[MPMoviePlayerThumbnailImageKey];
    self.imageView.image = image;
}
//监听取消
- (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];
}
//调用截屏方法(发出截图请求)
- (void)snipVideoView{
    // 截图请求
    NSTimeInterval interval = self.mpc.currentPlaybackTime;
    // 通过通知来获取截图
    [self.mpc requestThumbnailImagesAtTimes:@[@(interval)] timeOption:MPMovieTimeOptionExact];
}

2.iOS9.0以后的截图

2.1框架

#import <AVFoundation/AVFoundation.h>
类:AVAssetImageGenerator

2.2步骤

1.获得视频路径
2.创建视频资源截图工具
3.获得某个时间的截图
4.使用图片

2.3使用

- (void)snipVideoView{
    //1.获得视频路径
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"video3.mp4" withExtension:nil];
    //2.视频资源
    AVAsset *asset = [AVAsset assetWithURL:url];
    //3.视频资源截图工具
    AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    //4.获得某个时间的截图
    //4.1当前正在播放的秒 , 视频的帧率
    CMTime time = CMTimeMakeWithSeconds(self.mpc.currentPlaybackTime, asset.duration.timescale);
    //4.2将CMTime转换成NSValue
    NSValue *value = [NSValue valueWithCMTime:time];
    //4.3生成CMTime对应时间的截图
    [generator generateCGImagesAsynchronouslyForTimes:@[value] completionHandler:^(CMTime requestedTime, CGImageRef  _Nullable image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError * _Nullable error) {
        //5.使用图片
        //5.1注意:要对这个image进行强引用,防止被释放
        CGImageRetain(image);
        //5.2回到主线程更新UI
        dispatch_async(dispatch_get_main_queue(), ^{
            //5.3赋值图片
            UIImage *resultImage = [UIImage imageWithCGImage:image];
            self.imageView.image = resultImage;
            //5.4释放图片
            CGImageRelease(image);
        });
    }];
}

相关文章

  • 视频截图

    1.iOS9.0以前的截图 1.1框架 1.1步骤 1.2使用 2.iOS9.0以后的截图 2.1框架 2.2步骤...

  • 视频截图

    简介 视频截图,一般都是后台服务器给我提供的,有时候也需要我们自己去实现。要进行视频截图,首先要导入AVFound...

  • AVAsset 视频截图

    使用AVFoundation框架可以生成视频缩略图,用到的类: 》》AVAsset: 用于获取多媒体的相关信息,如...

  • 视频的截图

    #import "ViewController.h"#import@interface ViewControlle...

  • iOS - 视频截图

  • AVFoundation视频截图

  • iOS视频截图

    草稿

  • 获取视频截图

    最近刚刚忙完了,闲下来了,就想去写写博客,正苦于不知道写什么好,想起来最近在搞一个视频截图的功能,自己在探索过程中...

  • 4视频截图

  • 视频截图方法

    1 -(UIImage*)fFirstVideoFrame:(NSString*)path { MPMoviePl...

网友评论

    本文标题:视频截图

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