首页 > 吉祥物设计 > 视频设计说明万能模板-演示视频模板为何有用以及如何开发模板功能
2023
07-03

视频设计说明万能模板-演示视频模板为何有用以及如何开发模板功能

演示视频模板为何有用以及如何开发模板功能

每天分享最新最热的软件开发、DevOps、敏捷、测试和项目管理方面的文章,每天花3分钟学习为什么不做,希望大家喜欢和关注,你们的支持是我最大的动力。

在我看来,这就是模板在文本、图像、音频和视频编辑等领域变得越来越流行的原因。 在所有这些模板中,视频模板可能是用户要求最多的。 这是因为视频是一个漫长的创作,也可能需要很高的成本。 因此,从模板创建视频比从头开始创建视频要方便得多,尤其是对于视频编辑爱好者来说。

我的应用的视频模板解决方案是HMS Core视频编辑器工具包的模板功能。 此功能预装了一个模板库,我的用户可以直接使用这些模板来快速创建短视频、随时随地制作视频博客、创建产品展示视频、生成新闻视频等。

除此之外,该功能还附带一个平台,我可以在其中轻松管理模板,如下所示。

模板管理平台——AppGallery Connect

老实说,我真正喜欢这个功能的原因之一是它很容易集成,这要归功于它简单的代码、一整套 API 以及如何使用它们的相关描述。 以下是我如何将此功能合并到我的应用程序中。

开发流程准备配置应用信息集成SDK设置混淆脚本。 声明必要的权限,包括设备振动权限、麦克风使用权限、存储读取权限和存储写入权限项目配置设置认证信息

使用以下方式设置身份验证信息:

JavaScript

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

JavaScript

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

配置许可证 ID

由于此 ID 用于管理服务的使用配额卡通人物,因此它必须是唯一的。

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

初始化华为视频编辑器的运行库。

在工程配置过程中,首先要创建华为视频编辑器的对象,并初始化其运行库。 退出项目时应释放该对象。

1. 创建华为视频编辑器对象。

JavaScript

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

2. 指定预览区域的位置。 这个区域呈现的是视频图像,它是由SDK中创建的SurfaceView实现的。 创建此区域之前,请指定其位置。

超文本标记语言

// Specify a preview area. LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout); // Set the preview area layout. editor.setDisplay(mSdkPreviewContainer);

3. 初始化运行库。 如果许可证验证失败视频设计说明万能模板,将引发许可证异常。

创建Huawei Video Editor对象时,不使用任何系统资源。 手动对运行时库初始化进行计时,并在 SDK 中创建所需的线程和计时器。

JavaScript

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

能力整合

在这一部分中视频设计说明万能模板,我使用 HVETemplateManager 获取云模板列表,然后将该列表提供给我的应用程序用户。

JavaScript

// Obtain the template column list.
final HVEColumnInfo[] column = new HVEColumnInfo[1];
HVETemplateManager.getInstance().getColumnInfos(new HVETemplateManager.HVETemplateColumnsCallback() {
        @Override
        public void onSuccess(List result) {
           // Called when the list is successfully obtained.
           column[0] = result.get(0);
        }
        @Override
        public void onFail(int error) {
           // Called when the list failed to be obtained.
        }
});
// Obtain the list details.
final String[] templateIds = new String[1];
// size indicates the number of the to-be-requested on-cloud templates. The size value must be greater than 0. Offset indicates the offset of the to-be-requested on-cloud templates. The offset value must be greater than or equal to 0. true indicates to forcibly obtain the data of the on-cloud templates.
HVETemplateManager.getInstance().getTemplateInfos(column[0].getColumnId(), size, offset, true, new HVETemplateManager.HVETemplateInfosCallback() {
        @Override
        public void onSuccess(List result, boolean hasMore) {
           // Called when the list details are successfully obtained.
           HVETemplateInfo templateInfo = result.get(0);
           // Obtain the template ID.
           templateIds[0] = templateInfo.getId();
        }
        @Override
        public void onFail(int errorCode) {
           // Called when the list details failed to be obtained.
        }
});
// Obtain the template ID when the list details are obtained.
String templateId = templateIds[0];
// Obtain a template project.
final List[] editableElementList = new ArrayList[1];;
HVETemplateManager.getInstance().getTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectCallback() {
        @Override
        public void onSuccess(List editableElements) {
           // Direct to the material selection screen when the project is successfully obtained. Update editableElements with the paths of the selected local materials.
           editableElementList[0] = editableElements;
        }
        @Override
        public void onProgress(int progress) {
           // Called when the progress of obtaining the project is received.
        }
        @Override
        public void onFail(int errorCode) {
           // Called when the project failed to be obtained.
        }
});
// Prepare a template project.
HVETemplateManager.getInstance().prepareTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectPrepareCallback() {
        @Override
        public void onSuccess() {
            // Called when the preparation is successful. Create an instance of HuaweiVideoEditor, for operations like playback, preview, and export.           
        }
        @Override
        public void onProgress(int progress) {
            // Called when the preparation progress is received.
        }
        @Override
        public void onFail(int errorCode) {
            // Called when the preparation failed.
        }
});
// Create an instance of HuaweiVideoEditor.
// Such an instance will be used for operations like playback and export.
HuaweiVideoEditor editor = HuaweiVideoEditor.create(templateId, editableElementList[0]);
try {
      editor.initEnvironment();
} catch (LicenseException e) {
      SmartLog.e(TAG, "editor initEnvironment ERROR.");
}   

完成该过程后,您将创建一个应用程序,如下所示的演示。

演示演示

综上所述

尽管视频有很多好处,但制作引人注目的视频却很困难。 但在视频模板的帮助下表情包设计,用户可以在更短的时间内制作出精美的视频,这样他们就可以花更多的时间制作更多的视频。

本文演示了适用于移动应用程序的视频模板解决方案。 模板功能提供了多种开箱即用的预设模板,可以在平台上轻松管理。 更好的是,整个集成过程非常简单。 事实上,我什至可以从模板创建一个视频应用程序。

最后编辑:
作者:nuanquewen
吉祥物设计/卡通ip设计/卡通人物设计/卡通形象设计/表情包设计