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"
    ]
    }
    }
    }

  4. 编译:./build.sh --product-name rk3568 --ccache

  5. 生成库文件和一些可执行测试文件,路径: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.鸿蒙南向开发方向

相关推荐
程序猿会指北3 小时前
【鸿蒙(HarmonyOS)性能优化指南】启动分析工具Launch Profiler
c++·性能优化·harmonyos·openharmony·arkui·启动优化·鸿蒙开发
鸿蒙程序媛3 小时前
2024最新鸿蒙开发面试题合集-HarmonyOS NEXT Release(API 12 Release)
harmonyos·harmonyos面试题
轻口味4 小时前
【每日学点鸿蒙知识】DevEco、HDC报错、C调用数据库、测试工具、codegen
数据库·华为·harmonyos
Amarantine、沐风倩✨7 小时前
设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
java·物联网·音视频·webrtc·html5·视频编解码·七牛云存储
量子-Alex8 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
mo477612 小时前
Webrtc音频模块(四) 音频采集
音视频·webrtc
icy、泡芙12 小时前
T527-----音频调试
linux·驱动开发·音视频
易我数据恢复大师12 小时前
怎么提取音频保存到本地?电脑音频提取方法
音视频·软件·音频提取
野蛮的大西瓜12 小时前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
沈剑心14 小时前
如何在鸿蒙系统上实现「沉浸式」页面?
前端·harmonyos