鸿蒙NEXT开发实战:【视频文件裁剪】

使用OpenHarmony系统提供的ffmpeg三方库的能力在系统中实现了音视频文件裁剪的功能,并通过NAPI提供给上层应用调用。

基础信息

image.png

视频文件裁剪

简介

在OpenHarmony系统整个框架中有很多子系统,其中多媒体子系统是OpenHarmony比较重要的一个子系统,OpenHarmony中集成了ffmpeg的第三方库,多媒体的很多实现都与ffmpeg库有关,媒体文件的处理有很多应用场景,比如音视频的裁剪,音视频的分离等等。有些功能OpenHarmony多媒体子系统没有提供给外部相应的接口,我们可以通过NAPI的机制自己实现一套接口,提供给应用层去调用。

效果展示

本文通过实现音视频文件裁剪的功能,给小伙伴熟悉整个流程。以下是效果图 

首选通过选择源文件,来设置输入文件的参数,在裁剪设置中设定裁剪的起始时间和结束时间(单位为秒),参数设定完以后,我们点击裁剪按钮,这样系统对源文件进行媒体文件的裁剪,裁剪成功后,会显示播放按钮。

在整个操作过程中,源文件选择模块的播放按钮是对源文件进行播放,裁剪模块的播放按钮是对裁剪后文件的播放,我们可以通过播放观看结果是否正确。

目录结构

样例系统端说明

样例涉及两部分代码
本样例运行在OpenHarmony3.1 release的版本中,在Hi3516DV300平台上运行。
第一部分是应用端代码,在MediaCuteDemo目录中,使用DevEco Studio工具进行编译生成hap包,需要将@ohos.myffmpegdemo.d.ts放到OpenHarmony本地的sdk api目录中。
另一部分代码是myffmpegsys目录,这部分代码是在OpenHarmony源码中编译,主要提供napi接口。
1.myffmpegsys作为一个新的子系统集成到OpenHarmony源码中,放置在OpenHarmony源码的根目录下,和foundation在同一目录下。
2.配置build/subsystem_config.json

3.配置产品的productdefine/common/products/XXXX.json(其中XXXX对应的设备型号)

4.配置好了我们的子系统以及对应的组件后,就可以重新编译OpenHarmony源码,编译成功后刷机。

样例应用端说明

1.需要将应用中MediaCuteDemo\entry\src\main\js\MainAbility\common\video目录下的所有mp4文件通过hdc file send命令拷贝到设备的一下目录中/data/accounts/account_0/appdata/com.example.mediacutedemo/com.example.entry/com.example.entry.MainAbility 2.设置/data/accounts/account_0/appdata/com.example.mediacutedemo/com.example.entry/com.example.entry.MainAbility目录下mp4文件的权限和所有者

鸿蒙OpenHarmony知识已更新←前往

7c4c6d2ecaed023f7acc2711bdc15e0a.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Seata 2.x 系列【1】专栏导读

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Seata 版本 2.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 背景2. 简介3. 适用人群4. 环境及版本5. 文章导航5…

Spring基础——方法注入(Method Injection)

目录 查找方法注入(Lookup Method)查找方法注入基于XML的方法注入基于注解的方法注入 Arbitrary Method Replacement(任意方法替换) 文章所用项目源码参考:java_spring_learn_repo 查找方法注入(Lookup Met…

解决微信好友添加频繁问题

今天我们来聊一聊微信好友添加频繁的问题。在日常使用中,有时候我们会遇到一些添加好友受限的情况,那么究竟是什么原因导致了这一问题呢?接下来,让我们逐一来看一看。 1. 添加好友的频率太高 首先,如果我们在短时间内…

Java必须掌握的红黑树(含面试大厂题含源码)

当面试官要求你实现一个红黑树时,可能会给你一些提示或者要求,比如要求实现插入、删除、查找等操作。下面是一个简单的红黑树实现示例,包含了插入操作: class RedBlackTree {private static final boolean RED false;private st…

.NetCore6.0实现ActionFilter过滤器记录接口请求日志

文章目录 目的实现案例:一.首先我们新建一个WebApi项目二.配置 appsettings.json 文件,配置日志存放路径三.创建 Model 文件夹,创建AppConfig类和ErrorLog类1.在AppConfig类中编写一个GetConfigInfo方法获取配置文件中的值2.在ErrorLog类中&a…

供应josef约瑟DL-24C电流继电器 额定电流3A 整定范围0.5-2A 电气控制必备元件

电流继电器是一种特殊的电子控制器件,具有控制系统和被控制系统,它使用较小的电流去控制较大的电流,起到自动开关的作用。以下是电流继电器的特征: 承载大电流:电流继电器可以承载大电流,通常能够承受数十…

SpringBoot集成Docker

Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用及其依赖打包到一个可移植的容器中。 一、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://ww…

SpringBoot 接口防刷

1&#xff1a;pom添加依赖 <dependency><groupId>net.jodah</groupId><artifactId>expiringmap</artifactId><version>0.5.10</version></dependency> 2&#xff1a;封装工具 Slf4j public class RequestUtil {/*** 1&#…

大语言模型(LLM):每个专业人士的完美助手

「大语言模型&#xff08;LLM&#xff09;革命」&#xff1a;ChatGPT如何引领工作效率新篇章 在不断发展的技术领域&#xff0c;像 ChatGPT 这样的大型语言模型 (LLM) 已成为各行业专业人士不可或缺的工具。 这篇博文探讨了大语言模型&#xff08;LLM&#xff09;在专业环境中的…

GDPU Java 天码行空2

实验2 类与封装性 文章目录 实验2 类与封装性&#xff08;一&#xff09;实验目的&#xff08;二&#xff09;实验内容和步骤&#xff08;1&#xff09;建立学生类和测试类。学生类中有成员变量&#xff1a;姓名&#xff0c;年龄&#xff1b;成员方法&#xff1a;学习&#xff…

Java 8日期时间类LocalDate、LocalDateTime详解

Java 8日期时间类LocalDate、LocalDateTime详解 一、常见类型转换1.1 LocalDateTime 转 LocalDate1.2 LocalDateTime 转 Date1.3 LocalDate 转 LocalDateTime1.4 LocalDate 转 Date1.5 Date 转 LocalDateTime1.6 Date 转 LocalDate1.7 LocalDate 转 String1.8 String 转 LocalD…

程序逻辑控制

1.java的三大结构 可以说java的这三大结构包括其中的语句跟c语言上的基本上都是一样的。现在就当重新复习一遍吧&#xff01; 1.顺序结构 2.分支结构 if语句 跟c语言的语法一模一样。就直接看文案了。 switch语句 java中的switch语句跟c语言中的switch几乎相同&#xff0c;…

AtCoder Beginner Contest 343 A~F

A.Wrong Answer&#xff08;模拟&#xff09; 题意&#xff1a; 给你两个整数 A A A和 B B B&#xff0c;它们介于 0 0 0和 9 9 9之间。 输出任何一个介于 0 0 0和 9 9 9之间且不等于 A B AB AB的整数。 分析&#xff1a; 按题意判断并输出一个整数即可。 代码&#xff…

[力扣 Hot100]Day39 对称二叉树

题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 出处 思路 每一对对称的节点AB&#xff0c;A的左儿子和B的右儿子&#xff0c;A的右儿子和B的左儿子又是一对对称节点。 代码 class Solution { public:bool compare(TreeNode* r1, TreeNode* r2){i…

qnx display

05-SA8155 QNX Display框架及代码分析(1)_openwfd-CSDN博客 backlight p: 0 t: 0 00000 SHD -----ONLINE----- 2024/03/06 13:49:22.046 backlight p:1060958 t: 1 00000 ERR backlight_be[backlight_be.c:284]: pthread_create enter 2024/03/06 13…

python基础练习题目

1. 根据身高体重&#xff0c;判断人的胖瘦 描述&#xff1a; 通过身高和体重&#xff0c;判断一个人的胖瘦。国际上一般采用BMI体重指数&#xff0c;计算公式为BMI 体重 / 身高2(保留小数点后1位)&#xff0c;参考标准如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪…

回流和重绘

浏览器是如何进行页面渲染的&#xff1f; 1、解析&#xff08;parser&#xff09;HTML&#xff0c;生成DOM树&#xff1b; 2、同时解析css&#xff0c;生成样式规则&#xff1b; 3、根据DOM树和样式规则&#xff0c;生成渲染树&#xff1b; 4、进行布局Layout&#xff08;回流&…

SpringBoot集成RocketMQ

RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件&#xff0c;前身是MetaQ&#xff0c;是阿里参考Kafka特点研发的一个队列模型的消息中间件&#xff0c;后开源给apache基金会成为了apache的顶级开源项目&#xff0c;具有高性能、高可靠、高实时、分布式特点。 环境搭…

对VisionPro的认识,CogPMAlingTool模板匹配工具练习

什么是VisionPro&#xff1f; 在认识VisionPro之前我们需要先熟悉一下图片的各种格式 这里我们可以参考来自githubcurry博主的文章 图片各种格式的区别以及计算机如何存储图片 VisionPro 是由世界领先的机器视觉公司 Cognex 开发的一款专业机器视觉软件。它提供了强大的图像…

【一】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

职工考勤20170320 职工考勤20170320数据库展示 职工考勤表展示 职务代码表展示 一、基本操作 代码方式&#xff1a; --第一大题、基本操作 ALTER TABLE [dbo].[职工考勤表] DROP COLUMN [照片];EXEC sp_rename dbo.职工考勤表.职工编号, 工号, COLUMN;ALTER TABLE 职工考勤表 A…