当前位置: 首页 > news >正文

鸿蒙(API 12 Beta2版)媒体开发【Audio Kit简介】音频服务

亮点/特征

  • 低时延播放

    提供统一音频低时延/非低时延播放能力接口,通过垂直打通硬件,达成最低的音频输出时延。在游戏、提示/告警音、K歌等场景下,可以通过低时延接口,实现音频快速流畅播放。

  • 低功耗播放

    针对应用播放音乐、听书类长时间音频播放场景,为确保更佳续航体验,在亮/灭屏播放时采用差异化音频缓冲区处理机制,减少CPU被唤醒的频率来降低音频播放功耗。

  • 音效模式

    提供系统音效模式设置,应用可以按需开/关系统音效,确保最佳音效输出体验。

    系统默认为音乐、听书、影院等不同场景进行相应音效处理,但应用内部自身也存在一些定制化音效,为确保最终音效不产生冲突,系统提供音效模式配置开关,允许应用按需开/关系统音效。

  • 空间音频

    提供空间音频能力,支持用户佩戴TWS耳机时,使用应用播放音源(立体声/多声道/AudioVivid格式),可主观感受到空间音频渲染效果(方位感/空间感)。

  • 音振协同

    提供音振协同能力接口,实现音频及振动流的低时延同步控制。达成在输入法中开启音频和振动效果,打字输入时音振协同、节奏一致,来电铃声和振动同时响起,铃音和振动节奏同步一致的体验。

开发说明

在每个功能中,会介绍多种实现方式以应对不同的使用场景,以及该场景相关的子功能点。比如在音频播放功能内,会同时介绍音频的并发策略、音量管理和输出设备等在操作系统中的处理方式,帮助开发者能够开发出功能覆盖更全面的应用。

本开发指导仅针对音频播放或录制本身,Audio Kit提供相关能力,不涉及UI界面、图形处理、媒体存储或其他相关领域功能。

在开发音频功能之前,尤其是要实现处理音频数据的功能前,建议开发者先了解声学相关的知识,帮助理解操作系统提供的API是如何控制音频系统,从而开发出更易用、体验更好的音视频类应用。建议了解的相关概念包括但不限于:

  • 音频量化的过程:采样 > 量化 > 编码
  • 音频量化过程的相关概念:模拟信号和数字信号、采样率、声道、采样格式、位宽、码率、常见编码格式(如AAC、MP3、PCM、WMA等)、常见封装格式(如WAV、MPA、FLAC、AAC、OGG等)

音频流介绍

在开发音频应用之前,还需要了解什么是音频流,它是HarmonyOS音频系统中的关键概念,在之后的章节中会多次提及。

音频流,是指音频系统中一个具备音频格式和音频使用场景信息的独立音频数据处理单元。可以表示播放,也可以表示录制,并且具备独立音量调节和音频设备路由切换能力。

音频流基础信息通过[AudioStreamInfo]表示,包含采样、声道、位宽、编码信息,是创建音频播放或录制流的必要参数,描述了音频数据的基本属性。在配置时开发者需要保证基础信息与传输的音频数据是相匹配的,音频系统才能正确处理数据。

音频流使用场景信息

除了基本属性,音频流还需要具备使用场景信息。基础信息只能对音频数据进行描述,但在实际的使用过程中,不同的音频流,在音量大小、设备路由、并发策略上是有区别的。系统就是通过音频流所附带的使用场景信息,为不同的音频流制定合适的处理策略,以达到更好的音频用户体验。

  • 播放场景

    音频播放场景的信息,通过[StreamUsage]进行描述。

    StreamUsage指音频流本身的用途类型,包括媒体、语音通信、语音播报、通知、铃声等。

  • 录制场景

    音频流录制场景的信息,通过[SourceType]进行描述。

    SourceType指音频流中录音源的类型,包括麦克风音频源、语音识别音频源、语音通话音频源等。

支持的音频格式

audio模块下的接口支持PCM编码,包括AudioRenderer、AudioCapturer、TonePlayer、OpenSL ES等。

音频格式说明:

  • 支持的常用的音频采样率(Hz):8000、11025、12000、16000、22050、24000、32000、44100、48000、64000、8820012+、96000,17640012+、19200012+。

    不同设备支持的采样率规格会存在差异。

  • 支持单声道、双声道。

  • 支持的采样格式:U8(无符号8位整数)、S16LE(带符号的16位整数,小尾数)、S24LE(带符号的24位整数,小尾数)、S32LE(带符号的32位整数,小尾数)、F32LE(带符号的32位浮点数,小尾数)。

    由于系统限制,S24LE、S32LE、F32LE仅部分设备支持,请根据实际情况使用。

    小尾数指的是小端模式,即数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。这种存储模式将地址的高低和数据的位权有效结合起来,高地址部分权值高,低地址部分权值低。

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python实战:数据分析基础知识
  • MySQL——索引(三)删除索引
  • 【Nacos无压力源码领读】(二) 集成 LoadBalancer 与 OpenFeign
  • flink1.18 编译遇到的问题
  • AI入门指南(二):算法、训练、模型、大模型是什么?
  • 【Linux】Ubuntu20.04系统中能在命令行ping通百度等网站,而在浏览器中不能上网的问题解决方法
  • OracleDatabaseException:sequence is not exist
  • 2.类和对象(上)
  • 009 | 上证50ETF基金数据分析及预测
  • Golang编译-如何忽略某些文件去编译
  • Redis 缓存击穿、穿透、雪崩
  • 8月6日Spring Boot学习笔记
  • 三体系认证:企业发展的战略必选项
  • 【自动驾驶】ubuntu server安装桌面版
  • Selenium + Python 自动化测试06(frame操作方法)
  • “大数据应用场景”之隔壁老王(连载四)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android组件 - 收藏集 - 掘金
  • fetch 从初识到应用
  • HTTP中GET与POST的区别 99%的错误认识
  • Javascript 原型链
  • Javascript弹出层-初探
  • JSONP原理
  • Laravel 菜鸟晋级之路
  • mysql外键的使用
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue2.0 实现互斥
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分类模型——Logistics Regression
  • 基于webpack 的 vue 多页架构
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 解析 Webpack中import、require、按需加载的执行过程
  • 那些年我们用过的显示性能指标
  • 你不可错过的前端面试题(一)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二十三)Flask之高频面试点
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (南京观海微电子)——COF介绍
  • (排序详解之 堆排序)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)Dubbo快速入门、介绍、使用
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .NET Core 发展历程和版本迭代
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NetCore 如何动态路由
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestParam详解