OpenHarmony音频和音乐编码格式—vorbis

简介

一种通用音频和音乐编码格式。 Vorbis编解码器规范属于公共领域。所有技术细节都已发布并记录,任何软件实体都可以充分利用该格式,而无需支付许可费、版税或专利问题。

下载安装

直接在OpenHarmony-SIG仓中搜索vorbis并下载。

使用说明

以OpenHarmony 3.1 Beta的rk3568版本为例

  1. 将下载的vorbis库代码存在以下路径:./third_party/vorbis

  2. 将libogg库一起放入third_party目录

  3. 修改添加依赖的编译脚本,路径:/developtools/bytrace_standard/ohos.build

{"subsystem": "developtools","parts": {"bytrace_standard": {"module_list": ["//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core","//developtools/bytrace_standard/bin:bytrace_target","//developtools/bytrace_standard/bin:bytrace.cfg","//developtools/bytrace_standard/interfaces/kits/js/napi:bytrace","//third_party/libogg:libogg","//third_party/vorbis:vorbis_test","//third_party/vorbis:vorbisfile","//third_party/vorbis:vorbisenc","//third_party/vorbis:vorbis"],"inner_kits": [{"type": "so","name": "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core","header": {"header_files": ["bytrace.h"],"header_base": "//developtools/bytrace_standard/interfaces/innerkits/native/include"}}],"test_list": ["//developtools/bytrace_standard/bin/test:unittest"]}}
}
  1. 编译:./build.sh --product-name rk3568 --ccache

  2. 生成库文件和一些可执行测试文件,路径:out/rk3568/developtools/profiler

接口说明

  1. Vorbis headers处理: vorbis_info_init() vorbis_comment_init()
  2. 转换到任何PCM格式并输出: vorbis_synthesis_pcmout()
  3. 清理libvorbis存储: vorbis_block_clear() vorbis_dsp_clear()
  4. 清理逻辑位流: vorbis_comment_clear() vorbis_info_clear()
  5. 使用VBR质量模式: vorbis_encode_init_vbr()
  6. 使用平均比特率模式: vorbis_encode_init()
  7. 设置分析状态和辅助编码存储: vorbis_analysis_init() vorbis_block_init()
  8. 使用比特率管理: vorbis_analysis() vorbis_bitrate_addblock()
  9. vorbis进行一些数据预分析,然后划分块进行更复杂的处理: vorbis_analysis_blockout()

约束与限制

在下述版本验证通过:

DevEco Studio 版本:3.1 Beta1(3.1.0.200),SDK:API9 Beta5(3.2.10.6)

目录结构

|---- vorbis
|     |---- cmake      #编译文件
|     |---- contrib    #OSS-Fuzz构建脚本
|     |---- debian     #用于构建Debian的规则/规范文件deb包
|     |---- doc        #Vorbis文件
|     |---- examples   #libvorbis、libvorbisfile和libvorbisenc的编程使用的示例代码
|     |---- include    #头文件
|           |---- vorbis
|           |---- vorbisenc.h                  #设置编码器所需的操作
|           |---- vorbisfile.h                 #基于stdio的方便库,用于打开/查找/解码
|     |---- lib        #Vorbis音频编码格式的实现
|           |---- books
|                 |---- coupled
|                 |---- res_books_51.h         #5.1环绕声的静态码本
|                       |---- res_books_stereo.h     #由huff/huffbuld自动生成的静态码本
|                 |---- floor
|                       |---- floor_books.h          #由huff/huffbuld自动生成的静态码本
|                 |---- uncoupled
|                       |---- res_books_uncoupled.h  #由huff/huffbuld自动生成的静态码本
|           |---- modes
|                 |---- floor_all.h                  #关键floor设置
|                 |---- psych_8.h                    #8kHz心理声学设置
|                 |---- setup_44p51.h                #44.1/48kHz 5.1环绕声模式的顶级设置
|           |---- analysis.c                         #单块PCM分析模式调度
|           |---- block.c                            #PCM数据向量阻塞、开窗和拆卸/重新组装
|           |---- codebook.c                         #基本码本打包/解包/编码/解码操作
|           |---- envelope.c                         #PCM数据包络分析
|           |---- mapping0.c                         #通道映射0实现
|           |---- registry.c                         #time, floor, res后端和通道映射注册表
|           |---- synthesis.c                        #单块PCM合成
|           |---- vorbisenc.c                        #编码器模式设置的简单编程接口
|           |---- vorbisfile.c                       #基于stdio的便利库,用于打开/查找/解码
|           |---- window.c                           #窗口功能
|     |---- m4         #为libogg配置路径
|     |---- macosx     #MacOS X的项目文件
|     |---- symbian    #禁用某些警告
|     |---- test       #测试代码
|     |---- vq         #辅助码本
|     |---- win32      #Win32项目文件和生成自动化
|     |---- README.md  # 安装使用方法

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

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

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

相关文章

测试JAVA 测开

测试、java测开 1、测试用例要素(4个重要要素)2、测试用例的好处3、测试用例的设计方法3.1 基于需求设计测试用例3.2 等价类3.3 边界值3.4 判定表 1、测试用例要素(4个重要要素) 测试环境操作步骤测试数据预期结果 2、测试用例的…

企业数字化与数智化的区别是什么?

一、引言 随着信息技术的迅猛发展和应用普及,企业面临着数字化与数智化两大转型趋势。数字化主要关注数据的收集、整合和流程优化,而数智化则在此基础上进一步引入智能技术,实现业务的自动化、智能化和决策的科学化。探讨企业数字化与数智化…

初级C语言:6 结构体

6.1 结构体的声明 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 内置类型:char;short;int;long;long long;float;double 复杂对象的描述就会使…

通过拖拽动态调整div的大小

最近遇到一个需求,页面展示两块内容,需要通过拖拽可以动态改变大小,如下图: 实现思路:其实就是改变div样式的width,本质上就是Dom操作。 完整代码:(基于vue2项目实践) …

第 7 章 导航实现(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 准备工作 请先安装相关的ROS功能包: 安装 gmapping 包(用于构建地图): sudo apt inst…

爬虫机试题-爬取新闻网站

之前投简历时遇到了这样的一个笔试。本以为会是数据结构算法之类的没想到直接发了一个word直接提需求,感觉挺有意思就写了这篇文章,感兴趣的朋友可以看看。 拿到urllist 通过分析页面结构我们得以知道,这个页面本身没有新闻信息,是…

比特币叙事大转向

作者:David Lawant 编译:秦晋 要理比特币解减半动态,最关键的图表是下面这张,而不是价格图表。它显示了自 2012 年以来,矿业总收入与比特币现货交易量的比例,并标注了三个减半日期。 虽然矿工仍然是比特币生…

OpenHarmony图像解码库—stb-image [GN编译]

简介 stb_image主要是C/C实现的图像解码库。 下载安装 直接在OpenHarmony-SIG仓中搜索stb-image并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径:./third_party/stb-image 修改添加依赖的编译脚本,路径:/devel…

编程入门(五)【Visual Studio Code安装与C/C++语言运行】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言VScode安装与环境配置编写第一个C语言程序总结 前言 经过了前面对计算机…

mars3d实现禁止地图移动,禁止地图左右平移,但是鼠标可以移动的效果。

new mars3d.layer.GeoJsonLayer({渲染后实现鼠标左键按住不释放拖动时,地图不跟着拖动效果 当前问题: 1.在map初始化,或者是加载效果的时候,整个地球的场景都是一样的。 如果鼠标左键按住不释放,在屏幕上拖动的时候…

还在 MySQL 中使用枚举?小心有坑~

为什么使用枚举 限定值的取值范围,比如性别(男,女,未知)等。 枚举类型使用陷阱 1.超级不推荐在mysql中设置某一字段类型为enum,但是存的值为数字,比如‘0’,‘1’,‘2…

软考135-上午题-【软件工程】-软件配置管理

备注: 该部分考题内容在教材中找不到。直接背题目 一、配置数据库 配置数据库可以分为以下三类: (1) 开发库 专供开发人员使用,其中的信息可能做频繁修改,对其控制相当宽松 (2) 受控库 在生存期某一阶段工作结束时发布的阶段产…

【算法】深度优先遍历(DFS)算法详解与实现

文章目录 1.算法原理2. 常见的深度优先遍历方式3. 代码实现总结 深度优先遍历(DFS)是一种常用的树或图的遍历算法,它通过尽可能深地搜索树或图的分支,直到路径上的所有节点都被访问完毕,然后再回溯到上一层&#xff0c…

什么是云渲染?云渲染平台怎么使用?云渲染怎么收费?

什么是云渲染? 云渲染是一种利用云计算技术提供的云端服务,用户可以将本地任务递交到远程服务器上,由远程计算集群协调和完成渲染,并将结果返回本地,最后用户可以在本地下载渲染结果。 而实时云渲染则是云渲染的一种…

python入门之简洁安装VS保姆版安装(含虚拟环境)

11、保姆版安装 Anoconda安装(python的一个发行版本) 优点:集成了许多关于python科学计算的第三方库,保姆级别 下载:www.anaconda.com/download/ 版本默认64位,py37 √:add anaconda to my…

OCP Java17 SE Developers 复习题14

答案 C. Since the question asks about putting data into a structured object, the best class would be one that deserializes the data. Therefore, ObjectInputStream is the best choice, which is option C. ObjectWriter, BufferedStream, and ObjectReader are no…

可视化看板有那么多应用场景,该如何快速搭建?可视化工具该如何选择?

在当今的信息化时代,数据已经成为了现代决策的核心。无论是企业战略规划、运营管理,还是个人生活决策,数据都扮演着至关重要的角色。随着数据分析技术和工具的不断进步,数据在决策中的作用将变得更加突出,对组织和个人…

代码随想录算法训练营第三十六天|435. 无重叠区间,763.划分字母区间,56. 合并区间

题目:435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。 题目链接/讲解链接: https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0…

密文字段模糊检索方案

代码地址: https://github.com/zuiyu-main/EncryptDemo https://mp.weixin.qq.com/s/cXOg1tiMtJz2eibDZmXHUQ 在个别特殊领域中,数据的安全问题是非常的重要的,所以需要数据库存储的数据是需要加密存储的。所以也就引申出来本文这个问题,加密…

【每日刷题】Day7

【每日刷题】Day7 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 206. 反转链表 - 力扣(LeetCode) 2. 203. 移除链表元素 - 力扣(…