0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

harmony OS NEXT-音频录制与播放模块

程奕红 ? 来源:jf_34770892 ? 作者:jf_34770892 ? 2025-03-27 17:55 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# HarmonyOS 音频录制与播放模块

## 1.模块功能概览

- **麦克风权限动态检测与申请**
- **音频录制功能**(支持参数配置)
- **音频波形实时可视化**(暂时未完善,先凑合看,后续会完善)
- **录音文件播放功能**

## 2.权限检测流程

### 1.代码实现

```typescript
async checkPermission() {
const manager = abilityAccessCtrl.createAtManager();

// 首次权限申请
const result = await manager.requestPermissionsFromUser(
getContext(), ["ohos.permission.MICROPHONE"]
);

// 检查所有权限是否通过
const isPass = result.authResults.every(
res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED
);

if (!isPass) {
// 二次弹窗引导设置
const confirm = await promptAction.showDialog({...});

if (confirm.index === 1) {
// 跳转系统设置
const finalResult = await manager.requestPermissionOnSetting(
getContext(), ["ohos.permission.MICROPHONE"]
);
}
}
}
```

### 2.2. 权限状态处理

| 状态 | 处理方式 |
| -------------------- | -------------------- |
| 第一次授权成功 | 直接启用录音功能 |
| 第一次授权失败 | 弹窗提示前往系统设置 |
| 系统设置二次授权失败 | 返回上级页面 |

## 3. 录音功能核心实现

#### 1.录音机配置

```ts
// 创建文件描述符
const file = fileIo.openSync(filePath,
fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);

// AVRecorder 参数配置
const config = {
audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
url: `fd://${file.fd}`,
profile: {
audioBitrate: 100000,
audioChannels: 2,
audioSampleRate: 48000,
audioCodec: media.CodecMimeType.AUDIO_AAC,
fileFormat: media.ContainerFormatType.CFT_MPEG_4A
}
};
```

### 2.录音操作控制

| 方法 | 功能描述 |
| ------------- | ------------------------------ |
| startRecord() | 创建文件句柄/配置参数/启动录音 |
| stopRecord() | 停止录音/释放资源/关闭文件 |

### 3.音频播放实现

```ts
async playRecord() {
const avPlayer = await media.createAVPlayer();
avPlayer.url = `fd://${file.fd}`;

avPlayer.on('stateChange', (state) => {
if (state === 'initialized') {
avPlayer.prepare();
} else if (state === 'prepared') {
avPlayer.play(); // 自动播放
}
});
}
```

### 4.效果展示

![img](https://i-blog.csdnimg.cn/img_convert/7e139091863136676343350ef5ca5dcb.gif)


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音频录制
    +关注

    关注

    0

    文章

    2

    浏览量

    6808
  • Harmony
    +关注

    关注

    0

    文章

    108

    浏览量

    3102
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    蜻蜓FM开源“SmartXPlayer”音频播放组件,打造鸿蒙多端音频播放新引擎

    近日,由蜻蜓FM研发的音频播放组件“SmartXPlayer”正式开源并上线 OpenHarmony 三方库中心仓。作为一款专为鸿蒙多端场景打造的音频播放引擎,SmartXPlayer
    的头像 发表于 07-21 16:31 ?240次阅读
    蜻蜓FM开源“SmartXPlayer”<b class='flag-5'>音频</b><b class='flag-5'>播放</b>组件,打造鸿蒙多端<b class='flag-5'>音频</b><b class='flag-5'>播放</b>新引擎

    新品|Unit AudioPlayer,支持 MP3/WAV 播放音频播放单元

    UnitAudioPlayer是一款自带MP3解码功能的音频播放单元,内置高性能音频解码芯片N9301,自带microSD卡座。该产品采用UART通信接口,用户可通过配置指令实现音频
    的头像 发表于 06-20 15:59 ?450次阅读
    新品|Unit AudioPlayer,支持 MP3/WAV <b class='flag-5'>播放</b>的<b class='flag-5'>音频</b><b class='flag-5'>播放</b>单元

    harmony OS NEXT-双向数据绑定MVVM以及$$语法糖介绍

    # 鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍 ## 1.1 双向数据绑定概念 在鸿蒙(HarmonyOS)应用开发中,双向数据改变(或双向数据绑定)是一种让数据·模型和UI组件之间
    的头像 发表于 04-29 16:52 ?608次阅读

    harmony OS NEXT-通过用户首选项实现数据持久化

    # 鸿蒙通过用户首选项实现数据持久化 ## 1.1 场景介绍 用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此
    的头像 发表于 04-29 16:38 ?682次阅读

    harmony OS NEXT-Navagation基本用法

    # Navagation基本用法 > Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏,内容栏和公工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(NavDestination的子组件),首页和非首页通过路由进行切换 * 使用Navigation跳转的组件不需要再使用Entry来修饰,普通组件即可 * Navigation是一个导航组件,API9和API11的使用官方推荐方式各不相同 ## 1. Navagation API9的用法-(Navigation-NavRouter-(其他组件+NavD
    的头像 发表于 04-27 17:39 ?379次阅读

    harmony OS NEXT-评论功能小demo

    # 评论页面小demo ## 效果展示 ![img](https://i-blog.csdnimg.cn/img_convert/f574e0b18325ee466938a3cb70530209.gif) ## 1.拆解组件,分层搭建 我们将整个评论页面拆解为三个组件,分别是头部导航,评论项,回复三个部分,然后统一在index界面导入 ![image-20250304150652225](https://i-blog.csdnimg.cn/img_convert/2e234f0fe986014368d8d7f138577e6a.png) ## 2.头部导航界面搭建 ![image-20250304151026576](https://i-blog.csdnimg.cn/img_convert/c876aa04a505a3c3203c03984a2e1504.png) ```ts @Preview @Component struct HmNavBar { ?// 属性:是可以被传
    的头像 发表于 04-27 17:38 ?252次阅读

    新品 | Module Audio,ES8388音频交互模块

    与耳机播放),可满足各类麦克风录音与立体声音频播放需求。模块搭载STM32G030F6P6微控制器,支持TRRS插孔耳机机插拔检测及WS2812CRGB灯效驱动。
    的头像 发表于 04-25 14:16 ?781次阅读
    新品 | Module Audio,ES8388<b class='flag-5'>音频</b>交互<b class='flag-5'>模块</b>

    蓝牙音频模组中模拟音频和数字音频如何选择?

    蓝牙模块中我们常说的模拟音频和数字音频,是指两种不同的信号处理技术,它们都可以实现声音的录制、存储、编辑、压缩或播放,但也有一些区别和特点。
    的头像 发表于 04-17 15:55 ?435次阅读
    蓝牙<b class='flag-5'>音频</b>模组中模拟<b class='flag-5'>音频</b>和数字<b class='flag-5'>音频</b>如何选择?

    harmony OS NEXT-基本介绍及DevcoStudiop基本使用

    #鸿蒙基本介绍及DevcoStudiop基本使用 1.认识DevcoStudiop工作区 1.1认识工作区 开发节奏: 通过左侧目录找到对应的应用文件,在编辑区进行代码编写,在右侧看预览效果 快捷键:连按两下shift快速寻找全局内容,如文件 1.2如何排错 写代码时,我们经常会遇到这种情况,右侧出现不能开启预览器的提示,我们需要打开预览器日志查看报错 第一种方法 第二种方法 第三种方法:通过统一构建,暴露哪些文件及代码无法编译通过 1.3如何刷新看效果 预览器是有热
    的头像 发表于 03-26 16:48 ?470次阅读
    <b class='flag-5'>harmony</b> <b class='flag-5'>OS</b> <b class='flag-5'>NEXT-</b>基本介绍及DevcoStudiop基本使用

    如何在音频播放时插播音频

    ZDP14x0系列芯片是内置开源GUI引擎的图像显示专用驱动芯片,内部集成16MB/64MB显示内存、2D图形加速器、音视频解码器等丰富多媒体功能。不仅支持音视频播放,还支持在音视频播放时插播音频,本文将介绍如何在
    的头像 发表于 11-25 15:40 ?1395次阅读
    如何在<b class='flag-5'>音频</b><b class='flag-5'>播放</b>时插播<b class='flag-5'>音频</b>

    《DNK210使用指南 -CanMV版 V1.0》第三十一章 视频播放实验

    ;)video模块为Video对象提供了volume()方法,用于配置播放音频时的音量,volume()方法如下所示:video.volume(volume)volume()方法用于配置播放音频
    发表于 10-31 14:20

    《DNK210使用指南 -CanMV版 V1.0》第二十九章 音频录制实验

    第二十九章 音频录制实验 本章将介绍CanMV下的音频录制通过CanMV提供的模块便能快速地实现音频
    发表于 10-26 14:16

    《DNK210使用指南 -CanMV版 V1.0》第二十八章 音频播放实验

    设备,但对于音频文件的编解码以及数据流的处理,需要使用到CanMV提供的audio模块。audio模块是CanMV内置的模块,audio模块
    发表于 10-24 09:58

    dm368录制音视频后用vlc播放不同步是怎么回事?

    目前我们用其他的开发板 能够录制音视频,但是用vlc播放的时候发现每次都是视频播放完成了音频还要播放一会,随着
    发表于 10-15 06:56

    使用adau1961 codec进行录音,发现录制音频文件噪声非常大,请问有什么办法可以优化吗?

    (1)我这边使用adau1961 codec进行录音,发现录制音频文件噪声非常大,请问有什么办法可以优化么,我这边已经排除MIC导入噪声的可能,实际使用AMIC。 (2)我这边使用tas2505作为pa接speaker播放一个
    发表于 10-12 07:35