短视频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();