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

版本支持

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

相关类功能

名称 功能
AliyunICrop 裁剪功能核心类,包括裁剪、设置裁剪参数、设置回调等裁剪核心功能。
AliyunCropCreator 裁剪工厂类,获取裁剪实例。
CropParam 裁剪参数,设置裁剪的宽高、裁剪模式、输出路径等参数。
CropCallback 裁剪回调,设置裁剪完成、裁剪进度、裁剪失败等回调。

裁剪流程

流程 说明 示例代码
1 创建裁剪实例。 创建实例
2 设置裁剪的宽高、裁剪模式、输出路径等参数。 设置裁剪参数
3 设置裁剪完成、裁剪进度、裁剪失败等回调。 设置回调
4 开始裁剪。 开始裁剪
5 释放资源。 释放资源

创建实例

创建裁剪实例。代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能

创建实例
AliyunICrop cropper = AliyunCropCreator.createCropInstance(context);

设置裁剪参数

设置裁剪的宽高、裁剪模式、输出路径等参数。设置裁剪参数时,必选参数为setOutputWidth()、setOutputHeight() 、setOutputPath()、setInputPath()。代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能

//设置裁剪参数
CropParam cropParam = new CropParam();
//裁剪后宽度,单位:像素
cropParam.setOutputWidth(720);  
//裁剪后高度,单位:像素
cropParam.setOutputHeight(1080); 
 //设置裁剪模式,Scale:等比缩放裁剪, Fill:填充模式
cropParam.setScaleMode(VideoDisplayMode.Scale);
//输出文件路径
cropParam.setOutputPath(outputPath); 
//视频源文件路径
cropParam.setInputPath(inputPath); 
//开始时间,单位:微秒
cropParam.setStartTime(startTime); 
//结束时间,单位:微秒
cropParam.setEndTime(endTime); 
//裁剪媒体类型,包括图片、视频、音频
cropParam.setMediaType(MediaType.ANY_VIDEO_TYPE); 
//裁剪矩阵
int startCropPosX = 0;
int startCropPoxY = 0;
Rect cropRect = new Rect(startCropPosX, startCropPoxY, startCropPosX + outputWidth,
    startCropPoxY + outputHeight);
cropParam.setCropRect(cropRect);
//帧率
cropParam.setFrameRate(30);
//gop
cropParam.setGop(5);
//视频质量
cropParam.setQuality(VideoQuality.HD);
//视频编码方式
cropParam.setVideoCodec(VideoCodecs.H264_HARDWARE);
//填充颜色
cropParam.setFillColor(Color.BLACK);
cropper.setCropParam(cropParam);

设置回调

设置裁剪完成、裁剪进度、裁剪失败等回调。代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能

设置回调
cropper.setCropCallback(new CropCallback() {
    @Override
    public void onProgress(int i) {
      //裁剪进度
    }
      

    @Override
    public void onError(int i) {
      //错误代码
        Log.i("TestCrop", "testCrop,onError:" + i);
    }

    @Override
    public void onComplete(long executeTime) {
      //裁剪完成
    }

    @Override
    public void onCancelComplete() {
    }
});

开始裁剪

代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能

开始裁剪
cropper.startCrop();

释放资源

裁剪完成后,销毁接口,释放资源。代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能

释放资源
cropper.dispose();

视频裁剪示例代码

//1.实例创建
AliyunICrop aliyunICrop = AliyunCropCreator.createCropInstance(context);
CropParam cropParam = new CropParam();
//2.设置裁剪参数
//必要参数-输出视频宽高,源文件路径,输出文件路径
int outputWidth = 720;
int outputHeight = 1080;
cropParam.setOutputWidth(outputWidth);
cropParam.setOutputHeight(outputHeight);
cropParam.setOutputPath("/storage/emulated/0/DCIM/Camera/test.mp4");
cropParam.setInputPath("/storage/emulated/0/DCIM/Camera/lesson-01.mp4");
//可选参数如下:
//媒体类型,默认为 ANY_VIDEO_TYPE
cropParam.setMediaType(MediaType.ANY_VIDEO_TYPE);
//裁剪矩阵
int startCropPosX = 0;
int startCropPoxY = 0;
Rect cropRect = new Rect(startCropPosX, startCropPoxY, startCropPosX + outputWidth,
    startCropPoxY + outputHeight);
cropParam.setCropRect(cropRect);
//VideoDisplayMode.SCALE 缩放 VideoDisplayMode.FILL 填充
cropParam.setScaleMode(VideoDisplayMode.SCALE);
//帧率
cropParam.setFrameRate(30);
//gop
cropParam.setGop(5);
//视频质量
cropParam.setQuality(VideoQuality.HD);
//视频编码方式
cropParam.setVideoCodec(VideoCodecs.H264_HARDWARE);
//填充颜色
cropParam.setFillColor(Color.BLACK);
aliyunICrop.setCropParam(cropParam);
//3.设置裁剪回调
aliyunICrop.setCropCallback(new CropCallback() {
    @Override
    public void onProgress(int i) {
    }

    @Override
    public void onError(int i) {
        Log.i("TestCrop", "testCrop,onError:" + i);
    }

    @Override
    public void onComplete(long l) {
        Log.i("TestCrop", "onComplete:" + l);
        Toast.makeText(context, "裁剪完成,耗时为:" + l, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancelComplete() {
    }
});
//4.开始裁剪
aliyunICrop.startCrop();