全部产品
云市场

裁剪模块

更新时间:2018-12-17 09:13:22

功能介绍

短视频SDK支持对视频按时长、画幅裁剪,对音频按时长裁剪,对图片按画幅裁剪,裁剪核心类AliyunCrop

AliyunCrop实例对象必须是成员变量,不能是局部变量。

版本差异

版本 功能描述
专业版 支持所有功能
标准版 支持所有功能
基础版 支持所有功能

相关类功能

名称 功能
AliyunCrop 裁剪功能核心类

视频/音乐裁剪

初始化

  • 调用初始化方法创建裁剪对象

    1. /**
    2. @param error 错误码
    3. */
    4. - (instancetype)initWithDelegate:(id<AliyunCropDelegate>)delegate;
  • 设置视频/音乐输入文件路径

    1. @property (nonatomic, copy) NSString *inputPath;
  • 设置视频/音乐输出文件路径

    1. @property (nonatomic, copy) NSString *outputPath;

    如果输出文件路径是多级目录,请确保目录已经创建。

参数配置

  • 设置输出视频分辨率

    1. @property (nonatomic, assign) CGSize outputSize;
  • 设置裁剪时间起点(秒)

    1. @property (nonatomic, assign) float startTime;
  • 设置裁剪时间终点(秒)

    1. @property (nonatomic, assign) float endTime;
  • 设置裁剪模式

    1. /**
    2. 裁剪音乐时无需设置
    3. */
    4. @property (nonatomic, assign) AliyunCropCutMode cropMode;
  • 设置视频裁剪有效区域

    1. /**
    2. 裁剪音乐时无需设置
    3. */
    4. @property (nonatomic, assign) CGRect rect;

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

  • 设置视频质量

    默认值:AliyunVideoQualityMedium。

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

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

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

    默认值:25。

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

    默认值:5。

    1. @property (nonatomic, assign) int gop;
  • 设置码率(bps)

    1. /**
    2. 裁剪音乐时无需设置
    3. */
    4. @property (nonatomic, assign) int bitrate;
  • 设置背景颜色(视频填充模式)

    1. /**
    2. 裁剪音乐时无需设置
    3. */
    4. @property (nonatomic, strong) UIColor *fillBackgroundColor;

裁剪控制

  • 开始裁剪

    1. - (int)startCrop;
  • 取消裁剪

    1. - (void)cancel;

监听裁剪回调

delegate需要实现AliyunCropDelegate协议来监听裁剪回调,AliyunCropDelegate有如下回调接口:

  • 裁剪失败回调

    1. /**
    2. @param progress 当前进度 0-1
    3. */
    4. - (void)cropOnError:(int)error;
  • 裁剪进度回调

    1. - (void)cropTaskOnProgress:(float)progress;
  • 裁剪完成回调

    1. - (void)cropTaskOnComplete;
  • 主动取消或退后台时回调

    1. - (void)cropTaskOnCancel;

图片裁剪

短视频SDK提供了图片裁剪功能,核心类AliyunImageCrop

初始化

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

参数配置

  • 设置待裁剪图片

    1. @property (nonatomic, strong) UIImage *originImage;
  • 设置输出图片分辨率

    1. @property (nonatomic, assign) CGSize outputSize;
  • (可选)设置图片裁剪模式

    1. /**
    2. 0:填充模式;1:裁剪模式
    3. */
    4. @property (nonatomic, assign) AliyunImageCropMode cropMode;
  • (可选)设置裁剪区域(像素)

    1. @property (nonatomic, assign) CGRect cropRect;

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

  • (可选)设置背景颜色(照片填充模式)

    1. @property (nonatomic, strong) UIColor *fillBackgroundColor;

裁剪控制

  • 生成图片

    1. - (UIImage *)generateImage;

    返回裁剪后的图片,如果裁剪失败,返回nil。

示例

裁剪一段视频

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

裁剪一段音乐

  1. self.crop = [[AliyunCrop alloc] initWithDelegate:self];
  2. self.crop.inputPath = `待裁剪音乐文件地址`;
  3. self.crop.outputPath = `裁剪输出的音乐文件地址`;
  4. self.crop.startTime = 0.0;
  5. self.crop.endTime = 5.0;
  6. [self.crop startCrop]; //开始裁剪音乐