集成趣拍云 以及其中会遇到的一些小坑

来源:互联网 发布:2年java开发工程师简历 编辑:程序博客网 时间:2024/05/16 07:02

最近闲来无事,集成了个趣拍云拍摄的功能,当然趣拍还有直播的功能,有想法的小伙伴可以深入研究,我这里只是简单的介绍一下,它是自带美颜,滤镜等功能的一个三方框架,总的来说还是相对不错的。本来我是写了个好看点的集成文档,但是刚涉及博客还不会编辑代码模块 所以代码区域可能丑了点..坑的地方我会用红色字迹标出,蓝色部分为官方文档有介绍的没什么问题。

官方的SDK以及官方文档 http://docs.qupaicloud.com/121.html

具体步骤如下

1.1 下载好的SDK 分为3个文件夹01­lib(为SDK库文件),02­demo(为SDK demo文
件),03­doc(为SDK 集成文档)。


1.2 将01­libQupaisdk­release目录下的aar文件导入到开发者项目中。
打开File,选择New,点击New Module,再选择导入AAR包。


1.3.1将所需的依赖添加到gride中
,如果android版本为5.0以下的话 需要手动加 compile
‘com.squareup.okhttp3:okhttp:3.2.0’ 注意此处依赖的版本号根据自己studio的版本来自
行修改


dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:support-v13:22.2.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.6.4'
compile 'com.google.dagger:dagger-compiler:2.0.1'
compile 'com.google.dagger:dagger:2.0.1'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.nostra13.universalimageloader:universal-image-load
er:1.9.4'
compile 'com.google.code.findbugs:jsr305:3.0.0'
compile project(':Qupaisdk-release')
compile project(':oss-android-sdk')
}


1.3.2 其他配置


android{
//其它配置
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
}


1.3.3 将01­Demo中libs目录下有一系列的so包: armeabi­v7a/libgnustl_shared.so,
armeabi­v7a/libqupai­media­jni.so,armeabi­v7a/libqupai­media­thirdparty.so考入
到libs文件下后在gradle中添加


sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}


1.4在清单文件下声明权限


<uses-permission android:name="android.permission.WRITE_EXTERNAL_ST
ORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_ST
ATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STAT
E" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"
/>
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STO
RAGE" />
<uses-permission android:name="android.permission.GET_TASKS" />


2.1在Application类下加载底层动态库


for (String str : new String[]{"gnustl_shared", "qupai-media-thir
dparty", "qupai-media-jni"}) {
System.loadLibrary(str);
}


2.2.1在需要调用的activity中设立一个点击事件 startRecord()为调用方法(此处为结合官方Demo研究得出


String[] perms = { Manifest.permission.CAMERA, Manifest.permissio
n.RECORD_AUDIO,Manifest.permission.READ_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this, perms)) {
startRecord();
} else {
}


2.2.2在 startRecord()方法中首先创建 QupaiService 的实例


qupaiService = QupaiManager.getQupaiService(MainActivity.this);
if (qupaiService == null) {
Toast.makeText(MainActivity.this, "插件没有初始化,无法获取
QupaiService",
Toast.LENGTH_LONG).show();
return;
}
UISettings _UISettings = new UISettings() {
@Override
public boolean hasEditor() {
return true;//是否需要编辑功能
}
@Override
public boolean hasImporter() {
return true;//是否需要导入功能
}
@Override
public boolean hasGuide() {
return false;//是否启动引导功能,建议用户第一次使用时设置为
true
}
@Override
public boolean hasSkinBeautifer() {
return true;//是否显示美颜图标
}
};
//压缩参数
MovieExportOptions movie_options = new MovieExportOptions.B
uilder()
.setVideoBitrate(5*650*650)
.configureMuxer("movflags", "+faststart")
.build();
//输出视频的参数
ProjectOptions projectOptions = new ProjectOptions.Builde
r() //输出视频宽高目前只能设置1:1的宽高,建议设置480*480.
.setVideoSize(480, 480) //帧率 .setVideoFrameRate(3
0)//时长区间
.setDurationRange(2,8) .get();
//缩略图参数,可设置取得缩略图的数量,默认10张
ThumbnailExportOptions thumbnailExportOptions =new Thumbnai
lExportOptions.Builder().setCount(10).get();
VideoSessionCreateInfo info =new VideoSessionCreateInfo.Bui
lder()//水印地址,如"assets://Qupai/watermark/qupai-logo.png"
.setWaterMarkPath("assets://Qupai/watermark/qupai-l
ogo.png")//水印的位置
.setWaterMarkPosition(1)//摄像头方向,可配置前置或后置摄
像头
.setCameraFacing(Camera.CameraInfo.CAMERA_FACING_BA
CK)//美颜百分比,设置之后内部会记住,多次设置无效
.setBeautyProgress(80)//默认是否开启
.setBeautySkinOn(true)
.setMovieExportOptions(movie_options)
.setThumbnailExportOptions(thumbnailExportOption
s).build();


2.2.3初始化 AppGlobalSetting,AppConfig这两个类在SDK的Demo中


qupaiService.initRecord(info,projectOptions,_UISettings);
//引导,只显示一次,这里用SharedPreferences记录
final AppGlobalSetting sp = new AppGlobalSetting(getApplica
tionContext());
Boolean isGuideShow = sp.getBooleanGlobalItem(
AppConfig.PREF_VIDEO_EXIST_USER, true);
//此处代码为调用拍摄
qupaiService.showRecordPage(MainActivity.this, RequestCod
e.RECORDE_SHOW, isGuideShow);
sp.saveGlobalConfigItem(
AppConfig.PREF_VIDEO_EXIST_USER, false);


3.1录制完成的处理方法 RecordResult等类在SDK的Demo中能找到 videoFile为String类
型,thum为数组类型需要声明
在Demo中录制完成后调用了清除草稿的功能,需要存文件的请开发者在删除之前执行move
操作。


@Override protected void onActivityResult(int requestCode, int resu
ltCode, Intent data) {
if (resultCode == RESULT_OK) {
RecordResult result =new RecordResult(data); //得到视频地址,和缩略
图地址的数组,返回十张缩略图
videoFile = result.getPath(); thum = result.getThumbnail(); res
ult.getDuration();
tv_result.setText("视频路径:" + videoFile + "图片路径:" + thu
m[0]);
} else {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(MainActivity.this, "RESULT_CANCELED", To
ast.LENGTH_LONG).show();
}
}
}
上传等保存视频功能需要去官网创建用户账号绑定签名等操作,本文只简
单介绍了集成标准版SDK短视频功能。参考了官方的集成文档和SDK中的
Demo相结合。

阅读全文
1 0