音频录制开发指导

About 9 min

音频录制开发指导

场景介绍

音频录制的主要工作是将音频信号记录并保存下来,同时提供包括采样率、声道数、码率、编码格式、封装格式、文件路径等设置功能。

接口说明

表 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编码格式。

  1. 创建音频录制器。

    import media from '@ohos.multimedia.media';
    var recorder = media.createAudioRecorder();
    
    1
    2
  2. 准备音频录制参数。

    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);
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  3. 设置消息订阅事件。

    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();
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34