短视频SDK提供了裁剪模块,支持对视频按时长、画幅裁剪,对音频按时长裁剪,对图片按画幅裁剪。本文为您介绍iOS端短视频SDK的视频裁剪方法。

版本支持

版本 是否支持
专业版 支持
标准版 支持
基础版 支持

相关类功能

类名 功能
AliyunCrop 视频音频裁剪功能核心类,包括对视频和音频的裁剪、设置裁剪参数、设置回调等裁剪核心功能。
AliyunImageCrop 图片裁剪功能核心类,包括对图片的裁剪、设置裁剪参数等裁剪核心功能。
注意 视频音频的裁剪是异步操作,AliyunCrop实例对象必须是成员变量,不能是局部变量。裁剪过程退到后台会裁剪失败。

视频裁剪-常规裁剪

常规裁剪会重新编解码,支持设置更多输出视频的参数,如输出分辨率、码率、帧率、关键帧间隔、编码方式、视频质量等。

接口参数请参考AliyunCrop

初始化
//调用初始化方法创建裁剪对象
self.crop = [[AliyunCrop alloc] initWithDelegate:self];
设置输入路径,输出路径,裁剪时间
//设置视频的输入和输出文件路径
self.crop.inputPath = [self.class resourcePath:@"input.mp4"];
self.crop.outputPath =  [self.class resourcePath:@"output.mp4"];

//设置裁剪的时间起点和时间终点,单位:秒
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;
说明 如果输出文件路径是多级目录,请确保目录已经创建。
裁剪参数配置
//输出视频分辨率
self.crop.outputSize = CGSizeMake(720, 720);

//裁剪区域
self.crop.rect = CGRectMake(0, (1280-720) / 2, 720, 720);

//裁剪模式
self.crop.cropMode = AliyunCropModeScaleAspectCut;

//码率bps
self.crop.bitrate = 1000 * 1000;

//帧率
self.cropl.fps = 30;

//关键帧间隔
self.crop.gop = 90;

//视频质量
self.crop.videoQuality = AliyunVideoQualityHight;

//设置编码模式为硬编
self.crop.encodeMode = 1;
开始裁剪
[self.crop startCrop]; 
裁剪回调
//裁剪出错
- (void)cropOnError:(int)error {
}
 
 //裁剪进度
- (void)cropTaskOnProgress:(float)progress {
}

//裁剪完成
- (void)cropTaskOnComplete {
}

//裁剪取消
- (void)cropTaskOnCancel {
}

视频裁剪-快速裁剪

快速裁剪不重新编解码,只对时长做简单处理,不支持设置其他视频参数。

接口参数请参考AliyunCrop

初始化
//调用初始化方法创建裁剪对象
self.crop = [[AliyunCrop alloc] initWithDelegate:self];
设置为快速裁剪模式
//开启裁剪优化,设置为快速裁剪
self.crop.shouldOptimize = YES;
设置输入路径,输出路径,裁剪时间
//设置视频的输入和输出文件路径
self.crop.inputPath = [self.class resourcePath:@"input.mp4"];
self.crop.outputPath =  [self.class resourcePath:@"output.mp4"];

//设置裁剪的开始和结束时间
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;
说明 如果输出文件路径是多级目录,请确保目录已经创建。
开始裁剪
[self.crop startCrop]; 
裁剪回调
//裁剪出错
- (void)cropOnError:(int)error {
}
 
 //裁剪进度
- (void)cropTaskOnProgress:(float)progress {
}

//裁剪完成
- (void)cropTaskOnComplete {
}

//裁剪取消
- (void)cropTaskOnCancel {
}

音频裁剪

接口参数请参考AliyunCrop

初始化
//调用初始化方法创建裁剪对象
self.crop = [[AliyunCrop alloc] initWithDelegate:self];
设置输入路径,输出路径,裁剪时间
//设置视频的输入和输出文件路径
self.crop.inputPath = [self.class resourcePath:@"input.mp3"];
self.crop.outputPath =  [self.class resourcePath:@"output.mp3"];

//设置裁剪的时间起点和时间终点,单位:秒
self.crop.startTime = 0.0;
self.crop.endTime = 5.0;
说明 如果输出文件路径是多级目录,请确保目录已经创建。
开始裁剪
[self.crop startCrop]; 
裁剪回调
//裁剪出错
- (void)cropOnError:(int)error {
}
 
 //裁剪进度
- (void)cropTaskOnProgress:(float)progress {
}

//裁剪完成
- (void)cropTaskOnComplete {
}

//裁剪取消
- (void)cropTaskOnCancel {
}

图片裁剪

接口参数请参考AliyunImageCrop

初始化
//调用初始化方法创建裁剪对象
AliyunImageCrop *imageCrop  = [[AliyunImageCrop alloc] init];
设置输入图片
imageCrop.originImage = image;
裁剪参数设置
//设置输出图片分辨率
imageCrop.outputSize = CGSizeMake(200, 200);
//(可选)设置裁剪区域(像素)
imageCrop.cropRect = CGRectMake(50, 0, 200, 200);
//(可选)设置图片裁剪模式
imageCrop.cropMode = AliyunImageCropModeAspectCut;
开始裁剪,生成裁剪图片
UIImage *outputImage = [imageCrop generateImage];