關於視頻編輯SDK的接入說明,視頻編輯sdk接入
一、運行環境
Android 4.1(api 16)以上;
處理器:雙核 1GHz以上CPU(目前只支援ARM CPU, X86、MIPS暫不支援);推薦四核1.2GHz以上CPU
記憶體:1 GB以上;
二、註冊申請AppKey和APPSECRET
1、 登入http://www.rdsdk.com 註冊使用者
2、 登入註冊好的使用者
3、 進入視頻雲管理 點擊(新增)擷取應用的 appkey 、appsecret
三、下載並匯入SDK1、 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庫:
建議在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項目進行的,需要根據實際Integration Environment進行修改。
參考如下:
添加完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, //應用上下文
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 //定長截取
int returnType //需要給定的截取返回方式
)
其中截取返回方式returnType 參數值定義如下:
RETURN_TRIM_VIDEO = 0//返回截取後視頻
完成截取並匯出視頻後將會回調以下介面:
com.rd.xpkuisdk.ISdkCallBack.getVideoPath(
context, //應用上下文
exportType,//截取並匯出視頻回調類型
videoPath//截取並匯出後的視頻路徑
)
其中回調類型exportType參數值定義如下:
XpkSdk.XPK_TRIMVIDEO_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、播放器介面
setVideoPath(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.** { *; }