简介
阿里云短视频SDK裁剪模块提供视频裁剪能力,可裁剪视频片段调整时长,也可对视频的帧率、码率、分辨率、视频比例做调整。
裁剪功能集成
tips:由于基础版和标准版&专业版的裁剪功能一致,所以不做区分。
- 创建一个示例工程AliyunCropDemo
步骤1.文件导入
- 导入选中的library和gradle相关文件夹到示例工程
-
模块说明
| 名称 | 作用 | 是否必须|| —————————- | —————————- | —— || AliyunCrop | 裁剪ui模块 | 是 || AlivcMedia|媒体库模块|是|| AliyunSVideoBase | 短视频基础包 | 是 ||AliyunVideoCommon|公共模块|是|| thirdparty-lib | 项目中所依赖的第三方库的配置子模块 | 是 |
步骤2.引入包和build.gradle设置
- 在Android Project 的settings.gradle文件中添加以下引用
include ':AliyunSVideoBase'//短视频基础包
include ':AliyunCrop:pro_crop'//裁剪ui模块
include ':AliyunVideoCommon'//公共模块,主要为工具类
include ':AlivcMedia'//媒体库模块
- build.gradle中添加ndk和dependencies配置,初始化sdk以及使用的时候需要:
defaultConfig {
//...
ndk {
abiFilters "armeabi-v7a","arm64-v8a"
//短视频目前不支持x86架构
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//...
//裁剪的依赖
implementation project(':AliyunCrop:pro_crop')
implementation project(':AliyunSVideoBase')
implementation externalOKHTTP
}
- 在工程的build.gradle中添加thirdparty-lib/config.gradle的应用
buildscript {
//...
apply from: 'thirdparty-lib/config.gradle'
dependencies {
classpath '...'
}
}
- 添加maven仓库
将下面代码拷贝到 工程级别的build.gradle文件对应的位置。
allprojects {
repositories {
google()
jcenter()
maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
}
}
步骤3.添加权限
在AndroidManifest.xml文件中加入以下权限,已添加可以跳过此步骤。
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 从SDCard读取数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- 网络权限 sdk license需要-->
<uses-permission android:name="android.permission.INTERNET"/>
Android 6.0以上系统需要做动态权限请求。
步骤4.功能使用
tips:裁剪需要存储权限,为保证6.0以上机器可以正确使用您需要申请动态权限,您如果出现界面黑屏或者其他异常情况,请务必保证您拥有权限。
- 创建MyApplication继承android.app.Application或者在项目中已经指定的Application中添加以下代码
@Override
public void onCreate() {
super.onCreate();
QupaiHttpFinal.getInstance().initOkHttpFinal();
}
- 使用默认参数进入裁剪页面
AlivcCropInputParam mCropParam = new AlivcCropInputParam.Builder()
.setPath("视频文件路径")//视频文件路径,必填项
.build();
AliyunVideoCropActivity.startVideoCropForResult(MainActivity.this,mCropParam,REQUEST_CROP);
- 设置裁剪的参数,完整代码:
AlivcCropInputParam mCropParam = new AlivcCropInputParam.Builder()
.setPath("视频文件路径")//视频文件路径,必填项
.setFrameRate(frameRate)//设置帧率
.setGop(gop)//设置关键帧间隔
.setCropMode(cropMode)//裁剪模式
.setQuality(videoQulity)//视频质量
.setResolutionMode(resolutionMode)//分辨率
.setRatioMode(ratioMode)//视频比例
.setNeedRecord(false)//资源显示控件是否需要能跳录制
.setCropUseGPU(false)//GPU默认关闭
.setVideoBitrate()//码率
.build();
AliyunVideoCropActivity.startVideoCropForResult(this,mCropParam,REQUEST_CROP);
- 在onActivityResult中获取裁剪后视频的路径
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 10){
if(resultCode == Activity.RESULT_OK && data!= null){
AlivcCropOutputParam param = (AlivcCropOutputParam)data.getSerializableExtra(AlivcCropOutputParam.RESULT_KEY_OUTPUT_PARAM);
Toast.makeText(this,
"文件路径为 "+ param.getOutputPath() + " 时长为 " + param.getDuration(),
Toast.LENGTH_SHORT).show();
}else if(resultCode == Activity.RESULT_CANCELED){
Toast.makeText(this,"用户取消裁剪",Toast.LENGTH_SHORT).show();
}
}
}
- UI配置
UI配置需要为Activity指定主题,这里基础版录制和裁剪公用一份style,定义如下(非必须指定,如不指定即为默认主题)。
<style name="AliyunVideoUIStytle" >
<item name="qusnap_background_color">@color/color_bg</item> //背景主题色
<item name="qusnap_tint_color">@color/tint_color</item> //录制进度条颜色
<item name="qusnap_timeline_backgound_color">@color/timeline_backgound_color</item> //录制进度条背景色
<item name="qusnap_timeline_del_backgound_color">@color/timeline_background_del_color</item> //录制删除进度颜色
<item name="qusnap_back_icon">@mipmap/icon_back</item> // 返回按钮图标
<item name="qusnap_switch_light_icon">@drawable/snap_switch_light_selector</item> //闪光灯选择器
<item name="qusnap_switch_light_icon_disable">@mipmap/icon_light_dis</item>// 闪光灯禁用图标
<item name="qusnap_switch_light_icon_visibility">visible</item> // 闪光灯显隐属性
<item name="qusnap_switch_camera_icon">@drawable/snap_switch_camera</item> //摄像头选择器
<item name="qusnap_switch_camera_icon_visibility">visible</item> //摄像头显隐属性
<item name="qusnap_beauty_icon">@drawable/snap_switch_beauty</item> //美颜选择器
<item name="qusnap_beauty_icon_visibility">visible</item> // 美颜显隐属性
<item name="qusnap_record_icon">@drawable/snap_record_state_selector</item> //录制选择器
<item name="qusnap_delete_icon">@drawable/snap_icon_delete</item> //删除选择器
<item name="qusnap_complete_icon">@drawable/snap_icon_complete</item> //完成选择器
<item name="qusnap_gallery_icon">@mipmap/icon_default</item> //相册按钮
<item name="qusnap_gallery_icon_visibility">visible</item>//相册的显示隐藏
<item name="qusnap_time_txt_color">@android:color/white</item> //录制时间文字颜色
<item name="qusnap_time_txt_size">15dp</item> //录制时间文字大小
<item name="qusnap_time_txt_visibility">visible</item> //录制时间文字显隐属性
<item name="qusnap_time_line_pos_y">0dp</item> //录制进度条向上偏移量
<item name="qusnap_crop_sweep_left">@mipmap/icon_sweep_left</item> //裁剪滑动条左图标
<item name="qusnap_crop_sweep_right">@mipmap/icon_sweep_right</item> //裁剪滑动条右图标
<item name="qusnap_crop_seek_frame">@mipmap/icon_frame</item> //裁剪播放帧进度图标
<item name="qusnap_crop_seek_padding_color">@android:color/holo_red_dark</item> //裁剪滑动条上下边框颜色
<item name="qusnap_crop_icon_transform">@drawable/snap_transform_selector</item> //裁剪模式切换选择器
<item name="qusnap_crop_icon_transform_visibility">visible</item> //裁剪模式显隐属性
<item name="qusnap_crop_time_txt_color">@android:color/white</item> //裁剪视频时长文字颜色
<item name="qusnap_crop_time_txt_size">15dp</item> //裁剪视频时长文字大小
<item name="qusnap_crop_txt_visibility">visible</item> //裁剪视频时长文字显隐属性
</style>
原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/34100.html