音频录制开发指导
场景介绍
音频录制的主要工作是将音频信号记录并保存下来,同时提供包括采样率、声道数、码率、编码格式、封装格式、文件路径等设置功能。
接口说明
表1 media
| 接口名 | 描述 |
|---|---|
| media.createAudioRecorder() | 创建AudioRecorder实例。 |
| AudioRecorder | 提供音频录制相关功能。 |
| AudioRecorderConfig | 提供音频录制相关参数设置。 |
表2 音频录制相关的interface AudioRecorder
| 接口名 | 描述 |
|---|---|
| prepare(config: AudioRecorderConfig): void | 准备音频录制并设置参数。 |
| start(): void | 开始音频录制。 |
| pause(): void | 暂停音频录制。(暂不支持) |
| resume(): void | 恢复音频录制。(暂不支持) |
| stop(): void | 停止音频录制。 |
| release(): void | 释放音频录制资源。 |
| reset(): void | 重置音频录制。 |
| on(‘prepare’, function callback) | 订阅音频录制准备事件。 |
| on(‘start’, function callback) | 订阅音频录制开始事件。 |
| on(‘pause’, function callback) | 订阅音频录制暂停事件。 |
| on(‘resume’, function callback) | 订阅音频录制恢复事件。 |
| on(‘stop’,function callback) | 订阅音频录制结束事件。 |
| on(‘release’, function callback) | 订阅音频录制释放资源事件。 |
| on(‘reset’, function callback) | 订阅音频录制重置事件。 |
| on(‘error’, function callback) | 订阅音频录制错误事件。 |
表3 音频录制的相关参数的interface AudioRecorderConfig
| 接口名 | 描述 |
|---|---|
| audioEncoder?: AudioEncoder | 音频编码格式,默认值是AAC_LC。 |
| audioEncodeBitRate?: number | 音频编码的比特率,默认值为48000。 |
| audioSampleRate?: number | 音频编码的采样率,默认值为48000。 |
| numberOfChannels?:number | 音频的声道数,默认值为2。 |
| format?: AudioOutputFormat | 音频的输出格式,默认值是MPEG_4。 |
| uri: string | 音频的输出路径。(file://path 或者 file://fd) |
表4 AudioEncoder的相关参数的interface AudioEncoder
| 接口名 | 描述 |
|---|---|
| AAC_LC = 3 | 表示AAC_LC编码格式。 |
表5 音频输出格式的相关参数的interface AudioOutputFormat
| 接口名 | 描述 |
|---|---|
| MPEG_4 = 2 | 表示MPEG_4编码格式。 |
| AAC_ADTS= 6 | 表示AAC_ADTS编码格式。 |
创建音频录制器。
import media from '@ohos.multimedia.media';var recorder = media.createAudioRecorder();
准备音频录制参数。
let audioRecorderConfig = {audioEncoder : AAC_LC ,audioEncodeBitRate : 22050,audioSampleRate : 22050,numberOfChannels : 2,format : AAC_ADTS,uri : 'file:///data/accounts/account_0/appdata/appdata/recorder/test.m4a',}recorder.prepare(audioRecorderConfig);
设置消息订阅事件。
recorder.on('prepare', () => {console.info('setCallback prepare() case callback is called');recorder.start();});recorder.on('start', () => {console.info('setCallback start() case callback is called');setTimeout(function(){recorder.pause();}, 10000); // 开始录音10秒后,暂停录音。});recorder.on('pause', () => {console.info('setCallback pause() case callback is called');setTimeout(function(){recorder.resume();}, 10000); // 暂停录音10秒后,恢复录音。});recorder.on('resume', () => {console.info('setCallback resume() case callback is called');setTimeout(function(){recorder.stop();}, 10000); // 恢复录音10秒后,停止录音。});recorder.on('stop', () => {console.info('setCallback stop() case callback is called');recorder.release();});recorder.on('release', () => {console.info('setCallback release() case callback is called');});recorder.on('error', (err) => {console.info(`case error called,errCode is ${err.code}`);console.info(`case error called,errMessage is ${err.message}`);recorder.reset();});
