diff --git a/zh-cn/application-dev/reference/apis/js-apis-audio.md b/zh-cn/application-dev/reference/apis/js-apis-audio.md index 205a2994291ee1e34c2865aee4aa901d933e81cd..bfa3b632382d09eb3b6a3a405b818d4fff751c4d 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-audio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-audio.md @@ -36,6 +36,24 @@ getAudioManager(): AudioManager var audioManager = audio.getAudioManager(); ``` +## audio.getStreamManager9+ + +getStreamManager(): AudioStreamManager + +获取 **AudioStreamManager** 接口. + +**系统能力**: SystemCapability.Multimedia.Audio.Core + +**返回值** +| 类型 | 说明 | +| -------------------------------------------------| ------------------------------- | +| [AudioStreamManager](#audiostreammanagersup9sup) | **AudioStreamManager** 实例。 | + +**示例** +``` +var audioStreamManager = audio.getStreamManager(); +``` + ## audio.createAudioRenderer8+ createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\): void @@ -331,14 +349,14 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core -| 名称 | 默认值 | 描述 | -| --------------------- | ------ | -------------------------- | -| SAMPLE_FORMAT_INVALID | -1 | 无效格式。 | -| SAMPLE_FORMAT_U8 | 0 | 无符号8位整数。 | -| SAMPLE_FORMAT_S16LE | 1 | 带符号的16位整数,小尾数。 | -| SAMPLE_FORMAT_S24LE | 2 | 带符号的24位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| -| SAMPLE_FORMAT_S32LE | 3 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| -| SAMPLE_FORMAT_F32LE | 4 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| +| 名称 | 默认值 | 描述 | +| ---------------------------------- | ------ | -------------------------- | +| SAMPLE_FORMAT_INVALID | -1 | 无效格式。 | +| SAMPLE_FORMAT_U8 | 0 | 无符号8位整数。 | +| SAMPLE_FORMAT_S16LE | 1 | 带符号的16位整数,小尾数。 | +| SAMPLE_FORMAT_S24LE | 2 | 带符号的24位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| +| SAMPLE_FORMAT_S32LE | 3 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| +| SAMPLE_FORMAT_F32LE9+ | 4 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| ## AudioChannel8+ @@ -412,13 +430,13 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ## FocusType -枚举焦点类型。 +表示焦点类型的枚举。 **系统能力**: SystemCapability.Multimedia.Audio.Core -| 名称 | 默认值 | 描述 | -| ---------------------------------- | ------ | ---------- | -| FOCUS_TYPE_RECORDING | 0 | 录制类型。 | +| 名称 | 默认值 | 描述 | +| ---------------------------------- | ------ | ------------------------------- | +| FOCUS_TYPE_RECORDING | 0 | 在录制场景使用,可打断其他音频。 | ## AudioState8+ @@ -522,6 +540,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { | usage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 | | rendererFlags | number | 是 | 音频渲染器标志。 | +## AudioRendererFlag9+ + +枚举,决定输出策略的音频渲染器标志。 + +**系统能力**: SystemCapability.Multimedia.Audio.Core + +| 名称 | 默认值 | 说明 | +| ------------------| ------------ | ---------------------- | +| FLAG_NONE | 0 | 无特殊策略。 | +| FLAG_LOW_LATENCY | 1 | 使用低延迟进程的标志。 | + ## AudioRendererOptions8+ 音频渲染器选项信息。 @@ -628,6 +657,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { | source | [SourceType](#sourcetype) | 是 | 音源类型。 | | capturerFlags | number | 是 | 音频采集器标志。 | +## AudioRendererDataInfo9+ + +描述渲染器数据信息。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ----------- | -------| ------------------------ | +| buffer | ArrayBuffer | 是 | 要填充的缓冲区。 | +| flags | number | 是 | 缓冲区扩展信息。 | + ## SourceType8+ 枚举,音源类型。 @@ -1851,22 +1891,406 @@ audioManager.getAudioScene().then((value) => { }); ``` +## AudioStreamManager9+ + +实现音频流管理。 在**AudioStreamManager**调用任何API之前, 必须使用[getStreamManager](#audiogetstreammanagersup9sup) 创建一个 **AudioStreamManager** 实例. + +### getCurrentAudioRendererInfoArray9+ + +getCurrentAudioRendererInfoArray(callback: AsyncCallback<AudioRendererChangeInfoArray>): void; + +获取当前现有音频渲染器流的信息。此API使用异步回调返回结果。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------- | -------- | --------------------------- | +| callback | AsyncCallback<AudioRendererChangeInfoArray> | 是 | Callback用于返回当前现有音频渲染器的信息。 | + +**示例** +``` +audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => { + console.info('[GET_RENDERER_STATE_1_CALLBACK] **** Get Callback Called ****'); + if (err) { + console.log('getCurrentAudioRendererInfoArray :ERROR: '+err.message); + resultFlag = false; + } + else { + if (AudioRendererChangeInfoArray !=null) { + for (let i=0;i9+ + +getCurrentAudioRendererInfoArray(): Promise<AudioRendererChangeInfoArray>; + +获取当前现有音频渲染器的信息。此API使用Promise返回结果。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**返回值** + +| 类型 | 说明 | +| ---------------------------------------------------------------------------------| --------------------------------------- | +| Promise<AudioRendererChangeInfoArray> | Promise用于返回当前现有音频渲染器的信息。 | + +**示例** +``` +await audioStreamManager.getCurrentAudioRendererInfoArray().then( function (AudioRendererChangeInfoArray) { + console.info('[GET_RENDERER_STATE_3_PROMISE] ######### Get Promise is called ##########'); + if (AudioRendererChangeInfoArray!=null) { + for (let i=0;i { + console.log('getCurrentAudioRendererInfoArray :ERROR: '+err.message); + resultFlag = false; +}); +``` + +### getCurrentAudioCapturerInfoArray9+ + +getCurrentAudioCapturerInfoArray(callback: AsyncCallback<AudioCapturerChangeInfoArray>): void; + +获取当前现有音频捕捉器的信息。此API使用异步回调返回结果。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- | +| callback | AsyncCallback<AudioCapturerChangeInfoArray> | 是 | Callback用于返回当前现有音频捕获器流的信息。 | + +**示例** +``` +audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => { + console.info('[GET_CAPTURER_STATE_1_CALLBACK] **** Get Callback Called ****'); + if (err) { + console.log('getCurrentAudioCapturerInfoArray :ERROR: '+err.message); + resultFlag = false; + } + else { + if (AudioCapturerChangeInfoArray !=null) { + for (let i=0;i9+ + +getCurrentAudioCapturerInfoArray(): Promise<AudioCapturerChangeInfoArray>; + +获取当前现有音频捕捉器的信息。此API使用Promise返回结果。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**返回值** + +| 类型 | 说明 | +| ----------------------------------------------------------------------------------| ----------------------------------- | +| Promise<AudioCapturerChangeInfoArray> | Promise用于返回当前现有音频捕获器的信息。| + +**示例** +``` +await audioStreamManagerCB.getCurrentAudioCapturerInfoArray().then( function (AudioCapturerChangeInfoArray) { + console.info('AFCapturerChangeLog: [GET_CAP_STA_1_PR] **** Get Promise Called ****'); + if (AudioCapturerChangeInfoArray!=null) { + for (let i=0;i { + console.log('getCurrentAudioCapturerInfoArray :ERROR: '+err.message); + resultFlag = false; +}); +``` + +### on('audioRendererChange')9+ + +on(type: "audioRendererChange", callback: Callback<AudioRendererChangeInfoArray>): void; + +监听音频渲染器更改事件。 + +当音频渲染器发生任何更改时,注册的客户端将收到回调。 + +**System capability**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ---------- | --------- | -------------------------------------------------------------------------------- | +| type | string | 是 | 要侦听的事件的类型。仅支持AudioRenderChange事件。| +| callback | Callback<AudioRendererChangeInfoArray> | 是 | 渲染器流更改调用回调。| + +**示例** +``` +audioStreamManagerCB.on('audioRendererChange', (AudioRendererChangeInfoArray) => { + for (let i=0;i9+ + +off(type: "audioRendererChange"); + +取消订阅音频渲染器更改事件。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------- | ---- | ---------------- | +| type | string | 是 | 关闭渲染器的监听。 | + +**示例** +``` +audioStreamManagerCB.off('audioRendererChange'); +console.info('[RENDERER-CHANGE-ON-001] ######### RendererChange Off is called #########'); +``` + +### on('audioCapturerChange')9+ + +on(type: "audioCapturerChange", callback: Callback<AudioCapturerChangeInfoArray>): void; + +监听音频捕获器更改事件。 + +当音频捕获器发生任何更改时,注册的客户端将收到回调。 + +**系统能力**: SystemCapability.Multimedia.Audio.Capturer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------- | --------- | --------------------------------------------------------------------------------------------- | +| type | string | 是 | 要侦听的事件的类型。仅支持audioCapturerChange事件。 | +| callback | Callback<AudioCapturerChangeInfoArray> | 是 | 捕捉器流状态更改调用的回调。 | + +**示例** +``` +audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => { + for (let i=0;i9+ + +off(type: "audioCapturerChange"); + +取消订阅音频捕获器更改事件。 + +**系统能力**: SystemCapability.Multimedia.Audio.Capturer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | -------- | --- | ---------------------------- | +| type | string |是 | 关闭捕捉器的监听。 | + +**示例** +``` +audioStreamManager.off('audioCapturerChange'); +console.info('[GET_CAPTURER_STATE_2_PROMISE] ######### CapturerChange Off is called #########'); + +``` + +### isAudioRendererLowLatencySupported9+ + +isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo, callback: Callback<boolean>): void;; + +检查系统是否支持音频渲染器中的低延迟配置。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| ---------- | ----------------------- | -------- | --------------------------------------- | +| streaminfo | AudioStreamInfo | 是 | 音频渲染器流信息。 | +| callback | Callback<boolean> | 是 | callback用于返回当前现有音频渲染器的信息。 | + +**示例** +``` +var audioManager = audio.getAudioManager(); + +var AudioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_1, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} + +var streamManagerCB = audioManager.getStreamManager(); +streamManagerCB.isAudioRendererLowLatencySupported(AudioStreamInfo, (result) => { + console.info('isAudioRendererLowLatencySupported success var = ' + result); +}); +```` + +### isAudioRendererLowLatencySupported9+ + +isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo): Promise<boolean>; + +检查系统是否支持音频渲染器中的低延迟配置。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 类型 | 必填 | 说明 | +| ----------------------------------------------------- | -------| ------------------------------------ | +| (streaminfo: AudioStreamInfo): Promise<boolean> | 是 | Promise用于返回当前现有音频渲染器的信息。| + +**示例** +``` +var audioManager = audio.getAudioManager(); + +var AudioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_1, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} + +var streamManager = await audioManager.getStreamManager(); +var result = streamManager.isAudioRendererLowLatencySupported(AudioStreamInfo); +console.info('isAudioRendererLowLatencySupported success var =' + result); +``` + ## AudioDeviceDescriptor 描述音频设备。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device -| 名称 | 类型 | 可读 | 可写 | 说明 | -| ---------- | ------------------------- | ---- | ---- | ---------- | -| deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。 | -| deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。 | -| id | number | 是 | 否 | 设备id。 | -| name | string | 是 | 否 | 设备名称。 | -| address | string | 是 | 否 | 设备地址。 | -| sampleRates | Array<number> | 是 | 否 | 支持的采样率。 | -| channelCounts | Array<number> | 是 | 否 | 支持的通道数。 | -| channelMasks | Array<number> | 是 | 否 | 支持的通道掩码。 | +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------------------------- | ------------------------- | ---- | ---- | ---------- | +| deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。 | +| deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。 | +| id9+ | number | 是 | 否 | 设备id。 | +| name9+ | string | 是 | 否 | 设备名称。 | +| address9+ | string | 是 | 否 | 设备地址。 | +| sampleRates9+ | Array<number> | 是 | 否 | 支持的采样率。 | +| channelCounts9+ | Array<number> | 是 | 否 | 支持的通道数。 | +| channelMasks9+ | Array<number> | 是 | 否 | 支持的通道掩码。 | ## AudioDeviceDescriptors @@ -2876,6 +3300,40 @@ audioRenderer.on('stateChange', (state) => { }); ``` +on(type: "dataRequest", callback: Callback): void; + +订阅音频数据requeset事件回调。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + +**参数** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------- | --------- | ------------------------------------------------------------------- | +| type | string | 是 | 事件类型。值**dataRequest**表示数据请求事件。 | +| callback | [AudioRendererDataInfo](#audiorendererdatainfosup9sup) | 是 | 需要音频数据时调用回调。| + +**示例** +``` +const path = '/data/storage/el2/ba se/haps/entry/cache/PinkPanther60-44100-1c.wav'; + let ss = fileio.createStreamSync(path, 'r'); + + let discardHeader = new ArrayBuffer(44); + ss.readSync(discardHeader); + let rlen = 0; + audioRenderer.on('dataRequest', (audioRendererDataInfo) => { + var viewObject = new DataView(audioRendererDataInfo.buffer); + rlen += ss.readSync(viewObject.buffer); + console.info('AudioRenderLog: bytes read from file: ' + rlen); + }) +``` + +## AudioRendererChangeInfoArray9+ + +AudioRenderChangeInfo数组,只读。 + +**系统能力**: SystemCapability.Multimedia.Audio.Renderer + ## AudioCapturer8+ 提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。 @@ -3499,4 +3957,10 @@ audioCapturer.on('stateChange', (state) => { console.log("audio capturer state is: STATE_RUNNING"); } }); -``` \ No newline at end of file +``` + +## AudioCapturerChangeInfoArray9+ + +AudioCapturerChangeInfo数组,只读。 + +**系统能力**: SystemCapability.Multimedia.Audio.Capturer \ No newline at end of file