短视频SDK提供了裁剪模块,支持对视频按时长、画幅裁剪,对音频按时长裁剪,对图片按画幅裁剪。

相关类功能

名称 功能
AliyunCrop 裁剪功能核心类
说明
  • AliyunCrop实例对象必须是成员变量,不能是局部变量。
  • 裁剪模块专业版、标准版、基础版均支持所有功能。

视频、音乐裁剪

  • 初始化
    配置项 配置实例
    调用初始化方法创建裁剪对象
    /**
    @param error 错误码
    */ 
    - (instancetype)initWithDelegate:(id<AliyunCropDelegate>)delegate;
    设置视频、音乐输入文件路径
    @property (nonatomic, copy) NSString *inputPath;
    设置视频、音乐输出文件路径
    @property (nonatomic, copy) NSString *outputPath;
    说明 如果输出文件路径是多级目录,请确保目录已经创建。
  • 参数配置
    配置项 配置实例
    设置输出视频分辨率
    @property (nonatomic, assign) CGSize outputSize;
    设置裁剪时间起点(秒)
    @property (nonatomic, assign) float startTime;
    设置裁剪时间终点(秒)
    @property (nonatomic, assign) float endTime;
    设置裁剪模式
    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, assign) AliyunCropCutMode cropMode;
    设置视频裁剪有效区域

    裁剪区域rect中x,y,width,height值的计算方法:设定视频左上角为原点O(0,0),横向为x轴,纵向为y轴,假设视频裁剪区域为Z。rect中x值为Z区域左上角的顶点相对于原点O的x轴像素值,y值为Z区域左上角的顶点相对于原点O的y轴像素值,w值为裁剪区域Z的宽度像素值,h值为裁剪区域Z的高度像素值。

    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, assign) CGRect rect;
    设置视频质量

    默认值:AliyunVideoQualityMedium。

    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, assign) AliyunVideoQuality videoQuality;
    设置编码方式

    硬编速度更快,软编清晰度更高。

    /**
    编码方式0软编  1硬编 默认硬编
    */
    @property (nonatomic, assign) int encodeMode;
    设置帧率

    默认值为25。

    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, assign) int fps;
    设置关键帧间隔

    默认值为5。

    @property (nonatomic, assign) int gop;
    设置码率(bps)
    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, assign) int bitrate;
    设置背景颜色(视频填充模式)
    /**
    裁剪音乐时无需设置
    */
    @property (nonatomic, strong) UIColor *fillBackgroundColor;
  • 裁剪控制
    配置项 配置实例
    开始裁剪
    - (int)startCrop;
    取消裁剪
    - (void)cancel;
  • 监听裁剪回调
    delegate需要实现AliyunCropDelegate协议来监听裁剪回调,回调接口如下表所示。
    配置项 配置实例
    裁剪失败回调
    /**
    @param progress 当前进度 0~1
    */
    - (void)cropOnError:(int)error;
    裁剪进度回调
    - (void)cropTaskOnProgress:(float)progress;
    裁剪完成回调
    - (void)cropTaskOnComplete;
    主动取消或退后台时回调
    - (void)cropTaskOnCancel;

图片裁剪

短视频SDK提供了图片裁剪功能,核心类AliyunImageCrop。
  • 初始化

    创建AliyunImageCrop对象,完成初始化。

  • 参数配置
    配置项 配置实例
    设置待裁剪图片
    @property (nonatomic, strong) UIImage *originImage;
    设置输出图片分辨率
    @property (nonatomic, assign) CGSize outputSize;
    (可选)设置图片裁剪模式
    /**
    0:填充模式;1:裁剪模式
    */
    @property (nonatomic, assign) AliyunImageCropMode cropMode;
    (可选)设置裁剪区域(像素)

    仅适用于裁剪模式。例如:一张200x200像素的图片 ,cropRect可设置为 (0,0,100,100)。

    @property (nonatomic, assign) CGRect cropRect;
    (可选)设置背景颜色(照片填充模式)
    @property (nonatomic, strong) UIColor *fillBackgroundColor;
  • 裁剪控制
    生成图片
    - (UIImage *)generateImage;
    说明 返回裁剪后的图片,如果裁剪失败,返回nil。

示例代码

  • 裁剪一段视频
    self.crop = [[AliyunCrop alloc] initWithDelegate:self];
    self.crop.inputPath = `待裁剪视频文件地址`;
    self.crop.outputPath = `裁剪输出的视频文件地址`;
    self.crop.cropMode = AliyunCropModeScaleAspectCut;
    self.crop.outputSize = CGSizeMake(540, 540);//输出的视频分辨率为540*540
    self.crop.rect = CGRectMake(0, 0, 320, 320); //这里可以认为在当前视频上画了一个裁剪框(要保持视频画面不被裁剪需要设置宽为输入视频宽,高为输输入视频的高),裁剪框大小和输出视频的分辨率大小需保持固定比,否定可能变形。
    self.crop.startTime = 0.0;
    self.crop.endTime = 5.0;
    self.crop.fillBackgroundColor = [UIColor greenColor]; //填充模式下填充的背景颜色
    [self.crop startCrop]; //开始裁剪视频
  • 裁剪一段音乐
    self.crop = [[AliyunCrop alloc] initWithDelegate:self];
    self.crop.inputPath = `待裁剪音乐文件地址`;
    self.crop.outputPath = `裁剪输出的音乐文件地址`;
    self.crop.startTime = 0.0;
    self.crop.endTime = 5.0;[self.crop startCrop]; //开始裁剪音乐