audio-recorder.md 6.5 KB
Newer Older
W
wusongqing 已提交
1
# Audio Recording Development
Z
zengyawen 已提交
2

W
wusongqing 已提交
3
## When to Use
Z
zengyawen 已提交
4

W
wusongqing 已提交
5
During audio recording, audio signals are captured, encoded, and saved to files. You can specify parameters such as the sampling rate, number of audio channels, encoding format, encapsulation format, and file path for audio recording.
Z
zengyawen 已提交
6

W
wusongqing 已提交
7
**Figure 1** Audio recording state transition
Z
zengyawen 已提交
8

W
wusongqing 已提交
9
![en-us_image_audio_recorder_state_machine](figures/en-us_image_audio_recorder_state_machine.png)
Z
zengyawen 已提交
10 11 12



W
wusongqing 已提交
13
**Figure 2** Layer 0 diagram of audio recording
Z
zengyawen 已提交
14

W
wusongqing 已提交
15
![en-us_image_audio_recorder_zero](figures/en-us_image_audio_recorder_zero.png)
Z
zengyawen 已提交
16

W
wusongqing 已提交
17
## How to Develop
Z
zengyawen 已提交
18

W
wusongqing 已提交
19
For details about the APIs used for audio recording, see [js-apis-media.md](../reference/apis/js-apis-media.md).
Z
zengyawen 已提交
20

W
wusongqing 已提交
21
### Full-Process Scenario
Z
zengyawen 已提交
22

W
wusongqing 已提交
23
The full audio recording process includes creating an instance, setting recording parameters, starting, pausing, resuming, and stopping recording, and releasing resources.
Z
zengyawen 已提交
24

W
wusongqing 已提交
25 26 27 28 29
```js
function SetCallBack(audioRecorder) {
    audioRecorder.on('prepare', () => {              								// Set the 'prepare' event callback.
        console.log('prepare success');    
        // The recording page is ready. You can click the Record button to start recording.
Z
zengyawen 已提交
30
    });
W
wusongqing 已提交
31 32 33
    audioRecorder.on('start', () => {    		     								// Set the 'start' event callback.
    	console.log('audio recorder start success');
        // The Record button is changed to the pausable state.
Z
zengyawen 已提交
34
    });
W
wusongqing 已提交
35 36 37
    audioRecorder.on('pause', () => {    		     								// Set the 'pause' event callback.
        console.log('audio recorder pause success');
        // The Record button is changed to the recordable state.
Z
zengyawen 已提交
38
    });
W
wusongqing 已提交
39 40 41
    audioRecorder.on('resume', () => {    		     								// Set the 'resume' event callback.
        console.log('audio recorder resume success');
        // The Record button is changed to the pausable state.
Z
zengyawen 已提交
42
    });
W
wusongqing 已提交
43 44
    audioRecorder.on('stop', () => {    		     								// Set the 'stop' event callback.
        console.log('audio recorder stop success');
Z
zengyawen 已提交
45
    });
W
wusongqing 已提交
46 47
    audioRecorder.on('release', () => {    		     								// Set the 'release' event callback.
        console.log('audio recorder release success');
Z
zengyawen 已提交
48
    });
W
wusongqing 已提交
49 50 51
    audioRecorder.on('reset', () => {    		     								// Set the 'reset' event callback.
        console.log('audio recorder reset success');
        // You need to reset the recording parameters for another recording.
Z
zengyawen 已提交
52
    });
W
wusongqing 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
    audioRecorder.on('error', (error) => {             								// Set the 'error' event callback.
        console.info(`audio error called, errName is ${error.name}`);
        console.info(`audio error called, errCode is ${error.code}`);
        console.info(`audio error called, errMessage is ${error.message}`);
    });
}

// 1. Create an AudioRecorder instance.
let audioRecorder = media.createAudioRecorder();    
// 2. Set the callbacks.
SetCallBack(audioRecorder);    
// 3. Set the recording parameters.
let audioRecorderConfig = {
    audioEncoder : media.AudioEncoder.AAC_LC ,
    audioEncodeBitRate : 22050,
    audioSampleRate : 22050,
    numberOfChannels : 2,
    format : media.AudioOutputFormat.AAC_ADTS,
    uri : 'file:///data/accounts/account_0/appdata/appdata/recorder/test.m4a',       // The file must be created by the caller and granted with proper permissions.
    location : { latitude : 30, longitude : 130},
}																					
audioRecorder.prepare(audioRecorderConfig);
// 4. Start recording.
audioRecorder.start();                            	// The start method can be called to trigger the 'start' event callback only after the 'prepare' event callback is complete.
// 5. Pause recording.
audioRecorder.pause();                             	// The pause method can be called to trigger the 'pause' event callback only after the 'start' event callback is complete.
// 6. Resume recording.
audioRecorder.resume();                             // The resume method can be called to trigger the 'resume' event callback only after the 'pause' event callback is complete.
// 7. Stop recording.
audioRecorder.stop();                             	// The stop method can be called to trigger the 'stop' event callback only after the 'start' or 'resume' event callback is complete.
// 8. Reset recording.
audioRecorder.reset();                              // The prepare method can be called for another recording only after the 'reset' event callback is complete.
// 9. Release resources.
audioRecorder.release();                           	// The AudioRecorder resource is destroyed.
audioRecorder = undefined;
```

### Normal Recording Scenario

Unlike the full-process scenario, the normal recording scenario does not include the process of pausing and resuming recording.

```js
function SetCallBack(audioPlayer) {
    audioRecorder.on('prepare', () => {              								// Set the 'prepare' event callback.
        console.log('prepare success');    
        // The recording page is ready. You can click the Record button to start recording.
    });
    audioRecorder.on('start', () => {    		     								// Set the 'start' event callback.
    	console.log('audio recorder start success');
        // The Record button is changed to the pausable state.
    });  
    audioRecorder.on('stop', () => {    		     								// Set the 'stop' event callback.
        console.log('audio recorder stop success');
    });    
    audioRecorder.on('release', () => {    		     								// Set the 'release' event callback.
        console.log('audio recorder release success');
    });    
}
// 1. Create an AudioRecorder instance.
let audioRecorder = media.createAudioRecorder();   
// 2. Set the callbacks.
SetCallBack(audioRecorder);       
// 3. Set the recording parameters.
let audioRecorderConfig = {
    audioEncoder : media.AudioEncoder.AAC_LC ,
    audioEncodeBitRate : 22050,
    audioSampleRate : 22050,
    numberOfChannels : 2,
    format : media.AudioOutputFormat.AAC_ADTS,
    uri : 'file:///data/accounts/account_0/appdata/appdata/recorder/test.m4a',       // The file must be created by the caller and granted with proper permissions.
    location : { latitude : 30, longitude : 130},
}
audioRecorder.prepare(audioRecorderConfig)
// 4. Start recording.
audioRecorder.start();                            	// The start method can be called to trigger the 'start' event callback only after the 'prepare' event callback is complete.
// 5. Stop recording.
audioRecorder.stop();                             	// The stop method can be called to trigger the 'stop' event callback only after the 'start' or 'resume' event callback is complete.
// 6. Release resources.
audioRecorder.release();                           	// The AudioRecorder resource is destroyed.
audioRecorder = undefined;
```