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

相关类功能

名称 功能
AliyunCrop 裁剪功能核心类
说明 裁剪模块专业版、标准版、基础版均支持所有功能。

裁剪流程

配置项 配置实例
创建实例
AliyunCropCreator.createCropInstance(context);
设置裁剪参数
AliyunICrop.setCropParam(param);
设置回调
AliyunICrop.setCropCallback();
开始裁剪
AliyunICrop.startCrop();
释放资源
AliyunICrop.dispose();
注意 设置裁剪参数,必选参数为setOutputWidth()、setOutputHeight() 、setOutputPath()、setInputPath()。

示例代码

//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/VID_20210111_134419.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();

错误码

错误码 错误描述 建议
20010002
  • 源文件不存在。
  • 源文件没有读写权限。
  • 沙盒机制限制(target api 为30才有此限制)。
检查源文件及权限,检查沙盒target api。