文档

视频裁剪

更新时间:

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