百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

我是如何创建智能视频剪辑提取器的

qiyuwang 2024-10-04 05:03 12 浏览 0 评论

了解如何将精彩视频提取器集成到视频编辑器应用程序中,以便轻松创建 vlog。


旅行和生活视频博客在应用程序用户中很受欢迎:这些视频很有说服力,涵盖了旅程或一天中所有最吸引人的部分。要制作这样的视频,首先需要进行大量的编辑工作,以删除原始视频中琐碎和无意义的片段,而这曾经是视频编辑专业人员的工作。

这已不再是这种情况。现在我们拥有一系列智能移动应用程序,可以帮助我们自动从视频中提取精彩片段,因此我们可以更专注于通过添加特殊效果等方式为视频增添趣味。我选择使用 HMS Core Video Editor Kit 的高亮功能来创建我自己的 vlog 编辑器。

这个怎么运作

此功能评估视频帧的吸引力,然后提取最合适的帧。为此,据说该能力考虑了用户最关心的视频属性,这是根据用户的调查和经验评估得出的结论。在此基础上,高亮能力制定了涵盖各个方面的综合框架评估方案。例如:

  • 美学评价。 这方面是建立在构图、照明、颜色等基础上的数据集,这是能力的重要组成部分。
  • 标签和面部表情。它们表示检测到并可能被高亮功能提取的帧,例如包含人、动物和笑声的帧。
  • 帧质量和相机移动模式。该功能会丢弃模糊、失焦、曝光过度或抖动的低质量帧,以确保此类帧不会影响成品视频的质量。令人惊讶的是,尽管如此,高光功能却能够在 2 秒内完成提取过程。

亲眼看看使用高亮功能完成的视频与原始视频的对比情况。

支持技术

通过采用迭代优化的模型和框架评估方案,突出能力脱颖而出。从技术上和具体来说:

该功能引入了用于硬件解码的AMediaCodec和用于渲染帧并根据屏幕尺寸自动调整帧尺寸的开放图形库 (OpenGL)。能力算法使用多个神经网络模型。通过这种方式,该功能会检查它运行的设备型号,然后自动选择在 NPU、CPU 或 GPU 上运行。因此,该功能提供了更高的运行性能。

为了更快地提供提取结果,高亮能力使用稀疏采样到密集采样的两阶段算法,检查内容在众多视频中的分布情况,并采用帧缓冲区。所有这些都有助于提高确定最吸引人的视频帧的效率。为保证算法的高性能,该能力采用线程池调度和生产者-消费者模型,保证视频解码器和模型可以同时运行。

在稀疏采样阶段,该功能会解码和处理视频中的一些(最多 15 个)关键帧。关键帧之间的间隔不小于2秒。在密集采样阶段,算法挑选出最佳关键帧,然后提取前后帧,进一步分析视频的高亮部分。

提取结果与关键帧位置密切相关。当采样点不够密集时,高亮能力的处理结果将不理想,例如视频没有足够的关键帧或持续时间过长(大于1分钟)。为了能够提供最佳性能,建议输入视频的持续时间少于 60 秒。

现在让我们继续讨论如何集成此功能。

整合过程

准备工作

在进入下一部分之前做好必要的准备。所需步骤包括:

  1. 在 AppGallery Connect 中配置应用信息。
  2. 集成HMS Core SDK。
  3. 配置混淆脚本。
  4. 声明必要的权限。

设置视频编辑项目

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、神经网络、两阶段算法(稀疏采样到密集采样)等等。此功能可以帮助创建突出显示的视频提取器或在应用程序中构建突出显示的视频提取功能。



相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: