视频工具

iOS短视频SDK提供了视频文件解析、视频缩略图获取工具以辅助用户更方便的编辑录制视频等。

版本支持

版本

是否支持

专业版

支持

标准版

支持

基础版

支持

相关类功能

类名

功能

AliyunNativeParser

工具解析核心类,解析视频、音频及文件相关信息。

AliyunThumbnailParser

缩略图核心类,设置缩率图的裁剪范围、输出大小、开始取消等参数。

视频文件解析

视频文件解析的核心类为AliyunNativeParser类,通过该类可以解析出如下信息:

  • 视频:视频流编码格式、视频宽高、开始时间、时长、码率、帧率、关键帧间隔、总帧数、格式、旋转角度等信息。

  • 音频:音频流编码格式、开始时间、时长、总帧数、采样率、音频轨道数、码率、音频格式等信息。

  • 文件:文件名称、开始时间、时长、文件格式等信息。

//1.初始化
AliyunNativeParser *parser = [[AliyunNativeParser alloc] initWithPath:videoPath];

//2.获取视频信息
//通过接口获取
NSInteger videoWidth = [parser getVideoWidth];
NSInteger videoHeight = [parser getVideoHeight];

//通过Key的方式获取
float videoDuration = [parser getValueForKey:ALIYUN_VIDEO_DURATION].floatValue;
NSInteger videoBitrate = [parser getValueForKey:ALIYUN_VIDEO_BIT_RATE].integerValue;

视频缩略图

既可通过视频缩略图的核心类AliyunThumbnailParser类获取缩略图,也可通过AliyunNativeParser类获取缩略图,通过这些类可以在视频轨道上展示每一帧图片的缩略图,通常在视频编辑或裁剪时需要用到。

  • 使用AliyunNativeParser类获取

    //1.初始化 
    self.parser = [[AliyunNativeParser alloc] initWithPath:videoPath];
    
    //2.获取缩略图
    //使用时间间隔获取接口
    [self.parser loadThumbnailListWithDuration:1.0 imageWidth:100 complete:^(int errorCode, NSArray<UIImage *> *imageList) {
     }];
     
    //使用时间数组获取接口
    NSArray<NSNumber *> *timeList = @[@0,@1.0,@2.5,@6];
     [self.parser loadThumbnailWithTimeList: timeList imageWidth:100 complete:^(int errorCode, NSArray<UIImage *> *imageList) {
     }];
    说明

    获取缩略图是一个异步操作,过程中请保证AliyunNativeParser实例不被释放。

  • 使用AliyunThumbnailParser类获取

//1.初始化
self.parser = [[AliyunThumbnailParser alloc]initWithPath:self.videoPath delegate:self];

//2.设置图片参数
//图片裁剪范围
[self.parser setCutFrame:CGRectMake(0, 0, 200, 200)];

//图片输出大小
CGFloat ouputSizeWidth = 200;
[self.parser setOutputSize:CGSizeMake(ouputSizeWidth, ouputSizeWidth)];

//3.设置缩略图的时间点
NSArray<NSNumber *> *timeList = @[@0,@1.0,@2.5,@6];
[self.parser addThumbnailTimeList:timeList]; 

//4.开始获取缩略图
[self.parser start];

//5.获取缩略图回调
// 获取出错,注意在子线程回调
- (void)thumbnailParser:(AliyunThumbnailParser *)parser onError:(int)code {
}

//获取某张图片出错,注意在子线程回调
- (void)thumbnailParser:(AliyunThumbnailParser *)parser onPicError:(int)code time:(float)time {
}

//获取到的图片,注意在子线程回调
- (void)thumbnailParser:(AliyunThumbnailParser *)parser onGetPicture:(UIImage *)image time:(float)time {
}

//获取图片完成,注意在子线程回调
- (void)thumbnailParserOnCompleted:(AliyunThumbnailParser *)parser {
}