ios 获得本地视频的帧数的截图

ios 本地视频文件截图,有的类已经deprecated,提供三个函数以供使用

+ (UIImage*)getVideoThumbnailWithUrl:(NSURL*)videoUrl  second:(CGFloat)second size:(CGSize)size
{
    if (!videoUrl)
    {
        NSLog(@"WARNING:videoUrl为空");
        return nil;
    }
    AVURLAsset *urlSet = [AVURLAsset assetWithURL:videoUrl];
    AVAssetImageGenerator *imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:urlSet];
    imageGenerator.appliesPreferredTrackTransform = YES;
    imageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;

    /*
     如果不需要获取缩略图,就设置为NO,如果需要获取缩略图,则maximumSize为获取的最大尺寸。
     以BBC为例,getThumbnail = NO时,打印宽高数据为:1920*1072。
     getThumbnail = YES时,maximumSize为100*100。打印宽高数据为:100*55.
     注:不乘[UIScreen mainScreen].scale,会发现缩略图在100*100很虚。
     */
    BOOL getThumbnail = YES;
    if (getThumbnail)
    {
        CGFloat width = [UIScreen mainScreen].scale * size.width;
        CGFloat height = [UIScreen mainScreen].scale * size.height;
        imageGenerator.maximumSize =  CGSizeMake(height, 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;
}

+(UIImage*)getVideoImageWithUrl:(NSURL*)videoUrl second:(CGFloat)second{
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]initWithContentURL:videoUrl];
    moviePlayer.shouldAutoplay = NO;
    UIImage *thumbnail = [moviePlayer thumbnailImageAtTime:second timeOption:MPMovieTimeOptionNearestKeyFrame];
    return thumbnail;
}

+(UIImage*)getFristFrameImageWithUrl:(NSURL*)videoUrl{
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]
                                   initWithContentURL:videoUrl];
    UIImage *img = [mp thumbnailImageAtTime:0.0
                                 timeOption:MPMovieTimeOptionNearestKeyFrame];
    [mp stop];
    return img;
}

第一个函数的size填你得视频的尺寸为最佳

原文地址:https://www.cnblogs.com/RoysPhoneBlog/p/9869240.html

时间: 2024-11-05 19:11:14

ios 获得本地视频的帧数的截图的相关文章

iOS获取本地视频和网络URL视频的缩略图方法

iOS获取本地视频和网络URL视频的缩略图方法 字数222 阅读612 评论0 喜欢13 首先大家先添加AVFoundation和CoreMedia.framework两个框架 第一种本地视频获取缩略图 NSString *path = @"www.51ios.net/本地路径" MPMoviePlayerController *51iosMPMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileU

iOS 获取本地视频的缩略图

iOS 获取本地视频的缩略图 (2012-10-10 20:06:27) 转载▼ 标签: 视频 缩略图 本地 杂谈 分类: ios +(UIImage *)getImage:(NSString *)videoURL { AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:videoURL] options:nil]; AVAssetImageGenerator *gen = [[AVAssetIma

java获取视频第一帧工具类

java获取视频文件第一帧,为了防止黑画面,此例取第五帧,本例子采用maven形式 1. pom.xml 添加引用jar包 jdk采用1.8,日志自行添加即可,这里使用的是log4j2 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.

iOS 本地视频和网络视频流播放

需求:最近公司需要做一个楼宇对讲的功能:门口机(连接WIFI)拨号对室内机(对应的WIFI)的设备进行呼叫,室内机收到呼叫之后将对收到的数据进行UDP广播的转发,手机(连接对应的WIFI)收到视频流之后,实时的展示视频数据(手机可以接听,挂断,手机接听之后,室内机不展示视频,只是进行转发.) 简单点说就是手机客户端需要做一个类似于直播平台的软件,可以实时的展示视频,实时的播放接收到的声音数据,并且实时将手机麦克风收到的声音回传给室内机,室内机负责转发给门口机. 之前从来做过视频播放都是本地文件的

视频分辨率与帧数

1080i格式,分辨率为1920×1080i/60Hz,行频为33.75kHz  720p格式,分辨率为1280×720p/60Hz,行频为45kHz  480P 格式 分辨率是720*480 帧数就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示.每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象.高的帧率可以得到更流畅.更逼真的动画.每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅. 一般来说30fp

Opencv:按帧数读取视频并保存图片

import cv2 videoFile = 'data/最强大脑.mp4' cap = cv2.VideoCapture(videoFile) frameNum = 0 while (cap.isOpened()): ret, frame = cap.read() frameNum = frameNum + 1 if frameNum % 2 == 0: # 调整帧数 cv2.imwrite('image/output/vieo1_' + str(frameNum) + ".jpg"

iOS 在应用中播放本地视频文件

可以使用MPMoviePlayerController来播放本地视频文件 1.添加 Mediaplayer framework 并且在viewcontroller中#import <MediaPlayer/MediaPlayer.h> 2. 把视频文件拖拽到xcode中 3. 获取文件存放的路径 NSString*thePath=[[NSBundle mainBundle] pathForResource:@"yourVideo" ofType:@"MOV&quo

IOS ShareSDK实现分享——微信分享 本地视频分享

NSArray* imageArray = @[[UIImage imageNamed:@"icon.png"]]; if (imageArray) { NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; [shareParams SSDKSetupShareParamsByText:@"魔印plus一款好用的3D打印辅助软件" images:imageArray url:[NSU

锐动IOS带UI视频编辑SDK

1 编写目的 预期读者: 有视频编辑开发经验或者无经验的,打算或者正在使用"锐动iOS带UI视频编辑SDK"的相关工程师. iOS软件工程师. 产品经理. QA 2 名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等. 宽高比:视频分辨率的宽高比,常见的有16:9,4:3,1:1.锐动视频编辑SDK对各宽高比的视频都支持编辑,导出的默认分辨率是1280