乐趣区

关于android:HMS-Core-视频编辑服务开放模板能力助力用户一键Get同款酷炫视频

前言

短视频模板 ,是快捷创作短视频的一种形式,个别由业余设计师或模板创作人制作,用户只需替换视频模板中的局部素材,便可生成一支与模板一样的创意视频。这种省时省力、无需“烧脑”构思创意的“套模板”视频创作方法,深受用户青睐。

利用场景

短视频模板在短视频 APP、视频剪辑工具、拍摄丑化工具、游览出行、电商、新闻等垂域利用宽泛。例如:

在视频剪辑工具、拍摄丑化工具垂域,短视频模板性能能够升高视频剪辑门槛、激发用户创作,进而晋升利用的用户活跃度;

在游览出行利用中,用户能够通过“套模板”的形式用视频记录旅途中的风土人情;

在电商利用中,商家可通过套用商品展现模板的形式,疾速制作商品展现视频;

在新闻资讯利用中,用户可套用新闻模板,疾速发布新闻讯息。

华为 HMS Core 视频编辑服务模板能力

HMS Core 视频编辑服务近期凋谢了模板性能,并预置了一些不同场景的视频模板供开发者测试应用,后续还将陆续丰盛模板品类和数量。

接入简略、省时省力

HMS Core 视频编辑服务提供了涵盖模板栏目列表、模板详情、模板工程、导入导出等具体的开发接口、接口阐明和接入步骤,代码简略、清晰,开发省时省力。

云端治理、高效经营

HMS Core 视频编辑服务在 AGC 后盾为开发者提供了编排素材的后盾,经营人员能够在 web 端实现模板栏目编排、标签治理、国家 / 地区设置、高低架模板内容、疾速检索查问信息等。

集成代码

1. 开发筹备

具体筹备步骤可参考华为开发者联盟官网

2. 编辑工程集成

2.1 设置利用的鉴权信息

能够通过 api_key 或者 Access Token 来设置利用鉴权信息。

通过 setAccessToken 办法设置 Access Token,在利用启动时初始化设置一次即可,无需屡次设置。

MediaApplication.getInstance().setAccessToken("your access token");

通过 setApiKey 办法设置 api_key,在利用启动时初始化设置一次即可,无需屡次设置。

MediaApplication.getInstance().setApiKey("your ApiKey");

2.2 设置惟一标识 ID,即 License ID。

License ID 是进行管控的无效凭证,您要保障设置 License ID 的唯一性。

MediaApplication.getInstance().setLicenseId("License ID");

2.2.1 初始化 Editor 运行环境

创立编辑工程,须要首先创立 Editor 对象并初始化其运行环境。当来到编辑工程时,应开释 Editor 实例。

(1) 创立 Editor 对象

HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext());

(2) 指定预览窗口的布局地位

预览窗口负责视频图像画面的渲染,由视频编辑原子能力 SDK 外部创立 SurfaceView 来实现。在创立窗口之前,须要在您的 App 中指定预览窗口的布局地位。

<LinearLayout    
    android:id="@+id/video_content_layout"    
    android:layout_width="0dp"    
    android:layout_height="0dp"    
    android:background="@color/video_edit_main_bg_color"    
    android:gravity="center"    
    android:orientation="vertical" />
// 指定预览窗口 
LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout);

// 设置预览窗口承载的布局 
editor.setDisplay(mSdkPreviewContainer);

(3) 初始化运行环境,如果 License 鉴权失败,会抛出 LicenseException。

当 Editor 对象创立之后,此时还没有占用理论的系统资源,须要手动抉择其环境初始化的机会,此时视频编辑原子能力 SDK 外部会创立必须的线程和定时器等。

try {editor.initEnvironment();
   } catch (LicenseException error) {SmartLog.e(TAG, "initEnvironment failed:" + error.getErrorMsg());    
        finish();
        return;
   }

3. 模板能力集成

// 获取模板栏目列表
final HVEColumnInfo[] column = new HVEColumnInfo[1];
HVETemplateManager.getInstance().getColumnInfos(new HVETemplateManager.HVETemplateColumnsCallback() {
        @Override
        public void onSuccess(List<HVEColumnInfo> result) {
           // 获取模板栏目列表胜利
           column[0] = result.get(0);
        }

        @Override
        public void onFail(int error) {// 获取模板栏目列表失败}
});

// 获取模板详情
final String[] templateIds = new String[1];
// size 为须要申请数据的数量 > 0,offset 为须要申请数据的偏移量 ≥ 0,true 代表强制获取网络数据
HVETemplateManager.getInstance().getTemplateInfos(column[0].getColumnId(), size, offset, true, new HVETemplateManager.HVETemplateInfosCallback() {
        @Override
        public void onSuccess(List<HVETemplateInfo> result, boolean hasMore) {
           // 获取模板详情胜利
           HVETemplateInfo templateInfo = result.get(0);
           // 获取模板 ID
           templateIds[0] = templateInfo.getId();}

        @Override
        public void onFail(int errorCode) {// 获取模板详情失败}
});

// 待获取模板详情胜利后,获取模板 ID
String templateId = templateIds[0];

// 获取模板工程
final List<HVETemplateElement>[] editableElementList = new ArrayList[1];;
HVETemplateManager.getInstance().getTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectCallback() {
        @Override
        public void onSuccess(List<HVETemplateElement> editableElements) {
           // 获取胜利后跳转到抉择资源界面,把选中的本地资源门路更新到 editableElements
           editableElementList[0] = editableElements;
        }

        @Override
        public void onProgress(int progress) {// 获取进度}

        @Override
        public void onFail(int errorCode) {// 获取失败}
});

// 筹备模板工程
HVETemplateManager.getInstance().prepareTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectPrepareCallback() {
        @Override
        public void onSuccess() {// 筹备模板工程胜利,能够生成 HuaweiVideoEditor 实例进行播放、预览、导出等操作}
        @Override
        public void onProgress(int progress) {// 筹备进度}

        @Override
        public void onFail(int errorCode) {// 筹备失败}
});

// 在模板筹备胜利后,生成 HuaweiVideoEditor 实例
// 领有 editor 之后就能够进行播放或者导出操作,详情见播放工夫线和导出
HuaweiVideoEditor editor = HuaweiVideoEditor.create(templateId, editableElementList[0]);
try {editor.initEnvironment();
} catch (LicenseException e) {SmartLog.e(TAG, "editor initEnvironment ERROR.");
}   

Demo 演示

理解更多详情 >>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~

退出移动版