Android 视频编辑 SDK接入说明

一、名词解释

分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率。常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等。

宽高比:视频分辨率的宽高比,常见的有16:9,4:3,1:1。锐动视频编辑SDK对各宽高比的视频都支持编辑,导出的默认分辨率是640x360,宽高比是16:9。

帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。

码率: 数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

素材:来自系统相机,其他app,电脑,网络的照片,音乐,视频等。

视频分割: 把视频分割为若干个片段,可用于从视频中截取一个或者多个精彩瞬间,或者删除不喜欢的片段,分割后的多个片段也可以用于重新调整顺序,视频合并等。

视频裁切: 从视频画面中裁切出来仅需要的部分,锐动视频编辑SDK针对手机竖屏拍摄的画面,支持动态调整裁切区域,帮助用户不同时间点选择自己需要的画面。

视频旋转:对视频进行90°,180°,270°旋转,一般用于矫正用户手机上录制的头像横置的视频。

视频镜像:对视频左右镜像。

视频变速:对视频播放速度调整,实现慢镜头或者快镜头效果。

视频配乐:选取本地或者网络音乐作为视频的背景音乐。

视频配音:通过mic phone对视频配音。

视频字幕:使用文字标注视频。

视频滤镜:调整视频的画面颜色效果。

视频特效:在视频里面增加特效动画或声音

合并转场:两个视频片段之间的衔接效果。

主题(模版): 应用视频的整体效果方案。

二、集成步骤

(一)、运行环境

1、Android 4.1(api 16)以上;

2、处理器:双核 1GHz以上CPU(目前只支持ARM CPU, X86、MIPS暂不支持);推荐四核1.2GHz以上CPU

3、内存:1 GB以上;

(二)、注册申请AppKey和APPSECRET

1、 登录http://www.rdsdk.com 注册用户

2、 登录注册好的用户

3、 进入视频云管理 点击(新增)获取应用的 appkey 、appsecret

(三)、下载并导入SDK

1、Android Studio 导入xpkUISdk

点击File--->Import Module,选择路径,填写“Module name”,默认为xpkUISdk,点击“finish”

之后点击File--->Project Structure,选择你自己工程的Module,在Flavors选项卡中设置Min Sdk Version 不低于16

然后切换到Dependencies选项卡并点击右侧“+”号在弹出的下拉菜单选择Module Dependency点击。

弹出的小窗口中选择SDK相关的Modules,“OK”

添加成功后点击Project Structure设置界面的“OK”完成导入工作。

关于集成NDK SO库引发冲突解决办法如下:

步骤一:sdk library模块过滤

步骤二:application模块中过滤

编辑SDK NDK包含以下架构的SO库:

  • armeabi-v7a

建议在Module的build.gradle文件中使用NDK的“abiFilter”配置,设置支持的SO库架构。

如果在添加“abiFilter”之后Android Studio出现以下提示:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

则在项目根目录的gradle.properties文件中添加:

android.useDeprecatedNdk=true

在集成NDK SO库时,请注意只保留支持的架构SO库,参考截图配置

Android studio上绑定SDK javadoc文档

Android Studio中使用SDK jar包时,会在$PROJECT_DIR$/.idea/libraries目录中生成xpkuisdk_$VERSTION$.xml文件,添加以下配置:

<JAVADOC >
  <root url="file://$PROJECT_DIR$/../xpkUISdk/docs/xpkUISdk" />
</JAVADOC>

其中$PROJECT_DIR$为项目根目录;$VERSTION$代表SDK版本,当前为1.0.8,则该XML文件则为xpkuisdk_1_0_8.xml;

当前配置演示是以SDK demo项目进行的,需要根据实际集成环境进行修改。

参考如下截图:

添加完JAVADOC后,将是如下结果:

2、Eclipse 导入 xpkUISdk

3、准备AndroidManifest.xml(权限,注册Activity)

a.添加权限:

b.注册必要的Activity:

如果不想影响当前项目的AndroidManifest.xml,Eclipse下可以合并xpkUISdk中的配置,修改project.properties文件如下:

android.library.reference.1=../xpkUISdk

manifestmerger.enabled=true

4、替换内置配音

替换对应音频文件和soundtrack.json

5、调用SDK初始化

初始化成功后才能正常使用其他功能接口,还要注意系统权限的申请,否则SDK在系统api级别 >= 23(android 6.0+)下不能正常使用

6、指定配置参数

SDK初始化成功之后,需要部分自定义功能时需指定配置参数,不指定时也不会影响使用,只是按照默认配置进行调用。

a.界面配置类示例:

UIConfiguration uiConfig = new UIConfiguration.Builder()

//设置横竖屏(支持横屏,竖屏,自动)

.setOrientation(orientation)

//设置是否使用自定义相册(传false将调用秀拍客相册)

.useCustomAlbum(useCustomAlbum)

//设置是否开启向导化

.enalbeWizard(enable)

//设置视频默认比例

.setVideoProportion(proportion)

.get();

设置编辑导出功能模块显示与隐藏

uiConfig .setEditAndExportModuleVisibility(EditAndExportModules module,

boolean visibility)

其中EditAndExportModules 是编辑导出功能模块枚举

public enum EditAndExportModules {

/** 配乐 */

SOUNDTRACK,

/** 配音 */

DUBBING,

/** 滤镜 */

FILTER,

/** 字幕 */

TITLING,

/** 特效 */

SPECIAL_EFFECTS,

/** 片段编辑 */

CLIP_EDITING,

}

设置片段编辑功能模块显示与隐藏:

uiConfig .setClipEditingModuleVisibility(ClipEditingModules module,

boolean visibility)

其中ClipEditingModules 是片段编辑模块枚举

public enum ClipEditingModules {

/** 视频调速 */

VIDEO_SPEED_CONTROL,

/** 设置图片时长 */

IMAGE_DURATION_CONTROL,

/** 复制 */

COPY,

/** 图片视频编辑 */

EDIT,

/** 视频比例 */

PROPORTION,

/** 调序 */

SORT,

/** 截取 */

TRIM,

/** 分割 */

SPLIT,

}

若选择自定义相册,将会回调以下接口:

com.rd.xpkuisdk.ISdkCallBack.getVideo(context) //添加视频

com.rd.xpkuisdk.ISdkCallBack.getPhoto(context)//添加图片

在上述方法中调用自定义相册,选择视频或图片完成后,将它们的路径通过调用以下方法完成选择:

com.rd.xpkuisdk.XpkSdk.onCustomizeAlbum(

Contextcontext, //应用上下文

ArrayList<String> medialist //视频或图片路径集合

)

b.导出视频配置类示例:

ExportConfiguration exportConfig = new ExportConfiguration.Builder()

//设置保存导出视频时的码流 单位M

.setVideoBitRate(bitRate)

//设置导出视频时长 单位ms(设置为0或默认不设置将导出完整视频)

.setVideoDuration(exportVideoDuration)

//设置导出视频保存路径(设null将保存到默认路径)

.setSavePath(savePath)

//设置视频片尾图片路径(设null将没有片尾)

.setTrailerPath(trailerPath)

//设置视频片尾时长 单位ms(默认为2000ms)

.setTrailerDuration(trailerDuration)

.get();

c.录制拍摄配置类示例:

CameraConfiguration cameraConfig = new CameraConfiguration.Builder()

//设置限制录制的视频时长 单位为秒 0代表没有时间限制

.setVideoMaxTime(maxTime)

//确定是否支持拍照模式下点击拍照按钮立即返回

.setTakePhotoReturn(taskPhotoReturn)

//设置录制时启动默认页面方式

.setCameraUIType(type)

//录制时静音

.setAudioMute(mute)

.get();

其中CameraUIType可选常量定义如下:

//代表默认启动16:9宽屏录制界面并可切换到1:1界面

CameraConfiguration.WIDE_SCREEN_CAN_CHANGE

//代表默认启动1:1界面并可切换到16:9宽屏录制界面

CameraConfiguration.SQUARE_SCREEN_CAN_CHANGE

//代表默认启动1:1界面并不可切换到16:9宽屏录制界面

CameraConfiguration.ONLY_SQUARE_SCREEN

指定配置参数例子:

XpkSdk.getXpksdkService().initConfiguration(

exportConfig, //导出配置

uiConfig, //界面配置

cameraConfig //录制拍摄配置 );

(四)、录制视频

1、录制视频或拍照

进入该界面调用以下接口:

public static void com.rd.xpkuisdk.onXpkCamera(

Context context,  //应用上下文

boolean gotoEdit //是否录制完成后,进入高级编辑界面

)

录制视频或录制视频并编辑导出完成后将会回调以下接口:

com.rd.xpkuisdk.ISdkCallBack.getVideoPath(

context, //应用上下文

exportType,//编辑导出或录制完成后的回调类型

videoPath//视频路径

)

其中回调类型exportType参数值定义如下:

XpkSdk.XPK_CAMERA_EDIT_EXPORT //gotoEdit为true时,代表录制完成并编辑导出后的返回

XpkSdk.XPK_CAMERA_EXPORT //gotoEdit为false时,代表只是录制完成后的返回

(五)、编辑视频

1、进入sdk的功能界面(选择媒体资源)

void com.rd.xpkuisdk.XpkSdk.onXpkVideo(Context context//应用上下文)

2、进入sdk的编辑界面(直接进入编辑界面)

void com.rd.xpkuisdk.XpkSdk.onXpkEdit(

Context context,//应用上下文

ArrayList<String> list //媒体路径集合(可用的图片或视频的路径)

)

3、进入sdk的截取界面(直接进入截取界面)

通过以下接口可以直接进入截取界面:

void com.rd.xpkuisdk.XpkSdk.onXpkTrimVideo(

Context context, //应用上下文

String videoPath, //媒体路径

String savePath,//视频截取后的保存路径 设置null 将会保存到默认路径.../xpk/xpkVideos/

String title, //标题栏文字内容 设置null标题将会设为“截取”

int titleBarColor, //标题栏背景色

String buttonCancelText, //取消按钮文字 设置null 将会显示图标 ×

String buttonConfirmText, //确认按钮文字 设置null 将会显示图标√

int buttonColor //按钮背景色

);

完成截取需分为两个步骤,第一步是先确认截取返回方式,第二步通过返回方式将最终的结果通过对应的回调接口进行返回。

第一步:确认截取返回方式

确认截取返回方式时将会回调以下接口:

com.rd.xpkuisdk.ISdkCallBack.getVideoTrim(

context,//应用上下文

exportType //回调类型

)

其中回调类型exportType参数值定义如下:

XpkSdk.XPK_TRIMVIDEO_EXPORT //普通截取

XpkSdk.XPK_TRIMVIDEO_DURATION_EXPORT //定长截取

第二步:设置截取返回方式

通过以下接口完成截取返回方式设置:

void com.rd.xpkuisdk.XpkSdk.onVideoTrim(

Context context, //应用上下文

int returnType //需要给定的截取返回方式

)

其中截取返回方式returnType 参数值定义如下:

RETURN_TRIM_VIDEO = 0//返回截取后视频

完成截取并导出视频后将会回调以下接口:

com.rd.xpkuisdk.ISdkCallBack.getVideoPath(

context, //应用上下文

exportType,//截取并导出视频回调类型

videoPath//截取并导出后的视频路径

)

其中回调类型exportType参数值定义如下:

XpkSdk.XPK_TRIMVIDEO_EXPORT //普通截取

XpkSdk.XPK_TRIMVIDEO_DURATION_EXPORT //定长截取

RETURN_TRIM_TIME = 1//返回截取时间

截取界面将会返回截取视频的开始和结束时间 并执行以下回调:

com.rd.xpkuisdk.ISdkCallBack.getVideoTrimTime(

context, //应用上下文

exportType,//返回截取时间回调类型

startTime,//开始时间(单位ms)

endTime //结束时间(单位ms)

)

其中回调类型exportType参数值定义如下:

XpkSdk.XPK_TRIMVIDEO_EXPORT //普通截取

XpkSdk.XPK_TRIMVIDEO_DURATION_EXPORT //定长截取

4、导出视频

编辑完成后,根据导出配置生成视频,导出完成后将会回调以下接口:

com.rd.xpkuisdk.ISdkCallBack.getVideoPath(

context, //应用上下文

exportType,//导出视频回调类型

videoPath//视频路径

)

其中回调类型exportType参数值定义如下:

XpkSdk.XPK_EDIT_EXPORT //普通编辑导出完成后的返回

XpkSdk.XPK_CAMERA_EDIT_EXPORT //代表录制完成并编辑导出后的返回

(六)、响应退出

应用结束时,需调用一下SDK的退出接口XpkSdk.exitApp,一般是在最后退出Activity中的onDestroy方法内,具体实现参见demo。

(七)、使用自定义播放器

com.rd.xpkuisdk.ui.XpkVideoView

1、在布局文件中添加播放器

2、播放器初始化

void com.rd.xpkuisdk.XpkVideoView.setPlayerListener(XpkPlayerListener listener)

3、播放器接口

etVideoPath(String videoPath) //设置视频路径

boolean isPlaying() //判断播放器是否正在播放

void start() //开始播放

void pause() //暂停播放

int getCurrentPosition() //获取当前播放进度

void seekTo(int position) //跳到指定播放位置(单位ms)

int getDuration() //获取媒体时长,单位ms

(八)、分享视频

暂无

(九)、视频水印

添加水印的方法,参见截图,将一个PNG图片放在assets目录下,固定名称为watermark.png

(十)、打包混淆

需要在proguard.cfg文件中添加如下配置项:

-dontwarn  com.rd.**

-keep class com.rd.** { *; }

具体情况

Android视频编辑SDK集视频拍摄和视频剪辑功能于一体,同时包含视频配音配乐、字幕特效、滤镜、转场等各种功能,全方位满足开发者的需求,并可以快速植入到APP中。编辑预览时支持智能硬件解码,选择视频时不需要转码,减少用户等待时间

SDK功能介绍:

1.拍摄

  • 实时美颜
  • 多段拍摄 一个视频可以分多段次拍摄,并支持回删
  • 多种拍摄模式 支持长按拍摄、快速点击持续拍摄
  • 定时拍 支持5秒内定时拍摄
  • 摄像头切换 前、后摄像头自由切换,中间无卡顿
  • 多比例支持 支持1:1 、9:16、16:9多个比例录制
  • 变焦、对焦 通过相应手势可以缩放摄像头采集画面及清晰度(依赖硬件支持)
  • 滤镜 内置主流滤镜,与编辑滤镜同步,支持扩展更多滤镜
  • 照片 当前摄像头画面保存到图片

 截图

  

2.视频编辑

  • 滤镜 内置主流滤镜,支持扩展更多滤镜
  • 字幕、特效 字幕特效在指定位置,指定时间段显示; 字幕支持设置字体大小和颜色及背景图; 实时预览效果
  • 配音、配乐 支持指定时间段添加配音; 支持配音、配乐与视频原音比例调节; 支持本地添加更多配乐
  • 截取、分割 支持毫秒级截取、分割视频; 支持快速预览截取、分割后视频
  • 调速 调整视频的播放速度,快放或者慢放
  • 转场 支持多种转场; 支持随机转场、指定转场时长等扩展设置
  • 其它编辑功能 支持多种比例裁剪; 支持90、180、270度旋转视频画面; 支持左右镜像、上下镜像; 支持输出比例调整; 支持横屏编辑; 支持文字版; 支持图片时长设置; 支持视频调序等

 截图

   

   

最新SDK下载(以下链接是最新的,github代码会稍有延迟):

SDK下载请单击

功能试用:

您可以在安卓市场搜索“秀拍客”,我们使用本SDK整合的app。目前很多国内外软件企业已经整合到他们的产品中,我们这里不方便进行罗列。

关于授权:

www.rdsdk.com 致力于专业的人做专业的事,降低客户的开发时间和开发成本,你只需要支付很少的费用,花上几个小时就能增加视频编辑功能。

单击申请试用

开发文档:

点击查看

JAVA接口文档:

点击查看

洽谈咨询:

SDK交流群: 305128688

咨询电话: 4008989105

客服电话: 15313066905 (周一至周五 9:00-18:00)

客服邮箱:2637433751@qq.com

Android 视频编辑 SDK的更多相关文章

  1. iOS/Android 视频编辑SDK

    锐动天地为开发者提供短视频编辑.特效.直播.录屏.编解码.视频转换,等多种解决方案,涵盖PC.iOS.Android多平台.以市场为导向,不断打磨并创新技术,在稳定性,兼容性,硬件设备效率优化上千捶百 ...

  2. Android视频编辑SDK--RDVECore来自锐动的无UI,高度抽象化API

    1 RDVECore功能概述 RDVECore是锐动推出的无UI,高度抽象化API的视频编辑SDK,支持以下功能: 1.1 丰富的编辑功能 RDVECore包含了丰富的基础功能,对于编辑中的视频.图片 ...

  3. Android 视频直播 SDK

    Android 视频直播 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...

  4. iOS视频编辑SDK

    IOS视频编辑SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x72 ...

  5. RDVECore来自锐动的无UI,高度抽象化API的视频编辑SDK

    1 编写目的 预期读者: 有视频编辑开发经验或者无经验的,打算或者正在使用"锐动IOS版RDVECore"的相关工程师. iOS软件工程师. 产品经理. QA 2 名词解释 分辨率 ...

  6. LanSoEditor_common ---android平台的视频编辑SDK

    当前版本是LanSoEditor-v1.4 主要使用在音视频的: 裁剪,剪切,分离,合并,转换,拼接,水印,叠加,混合,转码等场合; 我们是针对android平台对ffmpeg做了硬件加速优化,经过多 ...

  7. 关于视频编辑SDK的接入说明

    一.运行环境 Android 4.1(api 16)以上: 处理器:双核 1GHz以上CPU(目前只支持ARM CPU, X86.MIPS暂不支持):推荐四核1.2GHz以上CPU 内存:1 GB以上 ...

  8. android平台短视频技术之 视频编辑的经验分享.

    android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意. ...

  9. LanSoEditor_advance1.8.0 视频编辑的高级版本

    ------------------------------------------2017年1月11日11:18:33------------------------------------- 我们 ...

随机推荐

  1. 在windows上搭建ipv6代理

    事出有因,学校每天12:00之后断网,断网之后怎么办?难道直接睡了?我不甘心.     幸好学校还是留有余地,在断网之后,还是能够上ipv6的,只是现阶段互联网对ipv6支持很不理想,怎么办?刚刚发现 ...

  2. HTML5学习笔记五:html5表单

    表单是页面上非常重要的一块内容,用户可输入的大部分内容都是在表单元素中完成的,与后台的交互大多数也是通过点击表单中的按钮. 一.新增的元素和属性 1.新增属性: 1.1 form属性:页面中的任何元素 ...

  3. iOS 之 UITextView

    _lableAssess = [[UITextView alloc] init]; [_lableAssess setFrame:CGRectMake(left2, top2, width2, siz ...

  4. bootstrap中下拉菜单点击事件 uncaught syntaxerror unexpected end of input异常问题

    原代码: <ul class="dropdown-menu" role="menu"> <li><a href="jav ...

  5. emmet学习笔记

    Emment语法使用:按table键的结果1.初始化:(HTML文档需要包含一些固定的标签,比如<html>.<head>.<body>等). html:或! :用 ...

  6. P2P之UDP穿透NAT的原理与实现

    首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两 ...

  7. Docker - 用Flannel跨主机

    试了下比较流行的几种SDN,感觉flannel还是比较好用,这里简单记录一下. 用的是virtualbox,3个机器,分别为: genesis : inet 192.168.99.103/24 brd ...

  8. java中数组的排序,直接排序,冒泡排序,插入排序

    1.直接排序: public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for ...

  9. iOS initWithFrame、initWithCoder、awakeFromNib的区别解析

    当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. ...

  10. HTML5 & CSS3 初学者指南(4) – Canvas使用

    介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...