我是如何创建智能视频剪辑提取器的
qiyuwang 2024-10-04 05:03 13 浏览 0 评论
了解如何将精彩视频提取器集成到视频编辑器应用程序中,以便轻松创建 vlog。
旅行和生活视频博客在应用程序用户中很受欢迎:这些视频很有说服力,涵盖了旅程或一天中所有最吸引人的部分。要制作这样的视频,首先需要进行大量的编辑工作,以删除原始视频中琐碎和无意义的片段,而这曾经是视频编辑专业人员的工作。
这已不再是这种情况。现在我们拥有一系列智能移动应用程序,可以帮助我们自动从视频中提取精彩片段,因此我们可以更专注于通过添加特殊效果等方式为视频增添趣味。我选择使用 HMS Core Video Editor Kit 的高亮功能来创建我自己的 vlog 编辑器。
这个怎么运作
此功能评估视频帧的吸引力,然后提取最合适的帧。为此,据说该能力考虑了用户最关心的视频属性,这是根据用户的调查和经验评估得出的结论。在此基础上,高亮能力制定了涵盖各个方面的综合框架评估方案。例如:
- 美学评价。 这方面是建立在构图、照明、颜色等基础上的数据集,这是能力的重要组成部分。
- 标签和面部表情。它们表示检测到并可能被高亮功能提取的帧,例如包含人、动物和笑声的帧。
- 帧质量和相机移动模式。该功能会丢弃模糊、失焦、曝光过度或抖动的低质量帧,以确保此类帧不会影响成品视频的质量。令人惊讶的是,尽管如此,高光功能却能够在 2 秒内完成提取过程。
亲眼看看使用高亮功能完成的视频与原始视频的对比情况。
支持技术
通过采用迭代优化的模型和框架评估方案,突出能力脱颖而出。从技术上和具体来说:
该功能引入了用于硬件解码的AMediaCodec和用于渲染帧并根据屏幕尺寸自动调整帧尺寸的开放图形库 (OpenGL)。能力算法使用多个神经网络模型。通过这种方式,该功能会检查它运行的设备型号,然后自动选择在 NPU、CPU 或 GPU 上运行。因此,该功能提供了更高的运行性能。
为了更快地提供提取结果,高亮能力使用稀疏采样到密集采样的两阶段算法,检查内容在众多视频中的分布情况,并采用帧缓冲区。所有这些都有助于提高确定最吸引人的视频帧的效率。为保证算法的高性能,该能力采用线程池调度和生产者-消费者模型,保证视频解码器和模型可以同时运行。
在稀疏采样阶段,该功能会解码和处理视频中的一些(最多 15 个)关键帧。关键帧之间的间隔不小于2秒。在密集采样阶段,算法挑选出最佳关键帧,然后提取前后帧,进一步分析视频的高亮部分。
提取结果与关键帧位置密切相关。当采样点不够密集时,高亮能力的处理结果将不理想,例如视频没有足够的关键帧或持续时间过长(大于1分钟)。为了能够提供最佳性能,建议输入视频的持续时间少于 60 秒。
现在让我们继续讨论如何集成此功能。
整合过程
准备工作
在进入下一部分之前做好必要的准备。所需步骤包括:
- 在 AppGallery Connect 中配置应用信息。
- 集成HMS Core SDK。
- 配置混淆脚本。
- 声明必要的权限。
设置视频编辑项目
1.使用访问令牌或 API 密钥配置应用验证信息。
- 方法一:调用setAccessToken设置访问令牌,应用启动时只需要一次。
MediaApplication.getInstance().setAccessToken("your access token");
- 方法二:调用setApiKey设置API密钥,应用启动时只需要一次。
MediaApplication.getInstance().setApiKey("your ApiKey");
2. 设置许可证 ID。
此 ID 用于管理 Video Editor Kit 的使用配额,并且必须是唯一的。
MediaApplication.getInstance().setLicenseId("License ID");
- 初始化HuaweiVideoEditor的运行环境。
在创建视频编辑项目时,我们首先需要创建一个HuaweiVideoEditor的实例并初始化它的运行环境。当您退出项目时,实例将被释放。
- 创建一个HuaweiVideoEditor的实例。
HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext());
- 确定预览区域的布局。
这样的区域渲染视频图像,这是由SurfaceView在基础能力SDK中实现的。在创建区域之前,我们需要指定它的布局。
<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" />
// Specify a preview area.
LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout);
// Design the layout of the area.
editor.setDisplay(mSdkPreviewContainer);
- 初始化运行时环境。如果许可证验证失败,LicenseException将被抛出。
HuaweiVideoEditor实例创建后,不会占用任何系统资源,需要我们手动设置运行环境的初始化时间。然后,基础能力 SDK 会在内部创建必要的线程和定时器。
try {
editor.initEnvironment();
} catch (LicenseException error) {
SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg());
finish();
return;
}
集成高光功能
// Create an object that will be processed by the highlight capability.
HVEVideoSelection hveVideoSelection = new HVEVideoSelection();
// Initialize the engine of the highlight capability.
hveVideoSelection.initVideoSelectionEngine(new HVEAIInitialCallback() {
@Override
public void onProgress(int progress) {
// Callback when the initialization progress is received.
}
@Override
public void onSuccess() {
// Callback when the initialization is successful.
}
@Override
public void onError(int errorCode, String errorMessage) {
// Callback when the initialization failed.
}
});
// After the initialization is successful, extract the highlighted video. filePath indicates the video file path, and duration indicates the desired duration for the highlighted video.
hveVideoSelection.getHighLight(filePath, duration, new HVEVideoSelectionCallback() {
@Override
public void onResult(long start) {
// The highlighted video is successfully extracted.
}
});
// Release the highlight engine.
hveVideoSelection.releaseVideoSelectionEngine();
结论
自出现以来,vlog 在这个媒体时代一直发挥着至关重要的作用。过去,能制作视频博客的人寥寥无几,因为从原始视频中挑选出最有趣的部分的过程可能非常艰巨。
借助智能移动应用技术,即使是视频编辑爱好者现在也可以创建视频博客,因为大部分过程都可以由具有突出显示视频提取功能的应用自动完成。
Video Editor Kit 的突出显示功能就是这样一种功能。此功能引入了一组功能来提供令人难以置信的结果,例如AMediaCodec、OpenGL、神经网络、两阶段算法(稀疏采样到密集采样)等等。此功能可以帮助创建突出显示的视频提取器或在应用程序中构建突出显示的视频提取功能。
相关推荐
- 别再乱找了!这才是 Alist 本地安装挂载的正确打开方式
-
一、探秘Alist的神奇世界在这个数据爆炸的时代,我们的生活里充斥着各种各样的网盘服务,百度网盘、阿里云盘、腾讯微云等等,它们成了我们存储资料的得力助手。但随着网盘数量的增多,管理这些分散在不同平...
- 如何将数据从旧iPhone传输到新iPhone 16?这五个方法你必须知道!
-
前不久,苹果发布了备受期待的iPhone16系列,新机型搭载了更强大的芯片、更流畅的操作体验,还有备受热议的全新摄像系统。无论你是冲着A18仿生芯片,还是更丰富的动态岛功能,相信很多果粉早已跃跃欲试...
- 大数据传输的定义与大数据传输解决方案的选择
-
当我们需要处理大量的数据时,我们就要把数据从一个地方移动到另一个地方。这个过程就叫做大数据传输。它通常需要用到高速的网络连接、分散的存储系统和数据传输协议,以保证数据的快速、可靠和安全的移动。常用的大...
- 【工具】在线传输文件工具(在线文件互传)
-
前言在线传输文件工具主要是用于在不同的设备之间,如手机、电脑、平板等快速便捷地传送文件。告别使用USB传统传输文件的方式。...
- 如何使用 CAN-FD 在 LPC5500 上传输数据
-
目录1引言2CAN-FD3示例演示1引言...
- 轻松同步:将照片从三星手机传输到iPad的简便方法
-
概括想要在新iPad上查看三星照片吗?但是,如果您不知道如何将照片从三星手机传输到iPad,则无法在iPad上查看图片。为此,本文分享了7个有用的方法,以便您可以使用它们在不同操作系统之...
- 常见又地道的网络缩写:美剧中常说的SFW到底是个啥?
-
在这堂课中,让我们来学习更多在数字网络世界中常用的有趣网络用语。7shifts/unsplashhttp,https“http”和“https”是万维网(www)传输文件用的协议。“http”是hy...
- 每天学会一个计算机网络协议之FTP
-
开始行文之前提出一个问题,相信大家在看完本文后一定可以回答当我们在网站上填写注册信息的时候,需要我们上传照片,上传的过程发生了什么?下面引入我们的主角,FTP文件传输协议FTPFileTransf...
- 即用即走,这3款文件分享工具真香
-
打工人的日常,免不了「文件分享存储服务」的需求。我们一般会选择不同的网盘,但是大家也知道,网盘不是限速就是叫你充值。今天跟大家简单推荐3款文件分享工具,既可以免登录匿名使用,而且操作简单稳定性也不错。...
- 安卓手机里的文件和照片与Mac互传的办法
-
因为HandShake一段时间未更新,似乎目前不可操作。我一时间未找到更好的「传输」办法,经实践操作,向大家介绍一下「安卓手机」,包括「一加」、「索尼」,都可用此方法,来进行文件传输到Mac的...
- 软网推荐:同一个平台选择不同的传输方法
-
平时上网的时候,我们经常要分享一些文件给其他朋友,一般通过云服务平台来实现。今天笔者给大家介绍的Worksphere传输服务,它提供了两种不同的分享方式,方便我们根据实际需要进行选择。一个链接分享所有...
- 跨平台不限速的免费文件传输网站(跨平台不限速的免费文件传输网站是什么)
-
大家好,欢迎来到天天惠分享,不知道各位平时都是用什么方法来进行文件跨平台传输的呢?是百度网盘?微信还是QQ?亦或是有线传输。虽然这些方法都可以达到传输的目的,但都有各自的缺陷,使用起来一言难尽。比如百...
- 全网最全最详细的全平台文件传输方法,解决你文件传输问题(一)
-
前言想必现在大多数人文件传输的方法还是使用qq微信,但是qq微信的文件传输有时候真是,...
- 文件传输工具有哪些?这3款堪称办公必备!
-
在不同设备间,想把文件从一台设备传输到另一台,尤其是大体积文件,更是免不了用到文件传输工具,可以说文件传输工具已成为提升效率的关键载体。面对海量文档、设计素材、会议纪要的流转需求,传统邮件附件、U盘拷...
- 小白也能用的跨网文件交换系统!10款简单易上手的文件摆渡工具
-
跨网文件交换系统对于需要频繁在不同网络环境中进行文件共享的用户来说至关重要。以下是10款简单易上手的文件摆渡工具,适合小白用户使用,帮助他们高效地分享和传输文件。10款简单易上手的跨网文件交换工具1....
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)