Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
fd99c621
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fd99c621
编写于
8月 01, 2022
作者:
J
jiao_yanlin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Submission of interface development guidance document of audiostreammanager module
Signed-off-by:
N
jiao_yanlin
<
jiaoyanlin@huawei.com
>
上级
de065055
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
115 addition
and
114 deletion
+115
-114
zh-cn/application-dev/media/Readme-CN.md
zh-cn/application-dev/media/Readme-CN.md
+1
-0
zh-cn/application-dev/media/audio-stream-manager.md
zh-cn/application-dev/media/audio-stream-manager.md
+114
-114
未找到文件。
zh-cn/application-dev/media/Readme-CN.md
浏览文件 @
fd99c621
...
...
@@ -5,6 +5,7 @@
-
[
音频播放开发指导
](
audio-playback.md
)
-
[
音频录制开发指导
](
audio-recorder.md
)
-
[
音频渲染开发指导
](
audio-renderer.md
)
-
[
音频流管理开发指导
](
audio-stream-manager.md
)
-
[
音频采集开发指导
](
audio-capturer.md
)
-
[
OpenSL ES播放开发指导
](
opensles-playback.md
)
-
[
OpenSL ES录音开发指导
](
opensles-capture.md
)
...
...
zh-cn/application-dev/media/audio-stream-manager.md
浏览文件 @
fd99c621
...
...
@@ -20,139 +20,139 @@ AudioStreamManager提供了音频流管理的方法。开发者可以通过本
在使用AudioStreamManager的API前,需要使用getStreamManager()创建一个AudioStreamManager实例。
```
js
var
audioStreamManager
=
audio
.
getStreamManager
();
```
```
js
var
audioStreamManager
=
audio
.
getStreamManager
();
```
2.
(可选)使用on('audioRendererChange')监听音频渲染器更改事件。
如果音频流监听应用需要在音频播放应用状态变化、设备变化、音频属性变化时获取通知,可以订阅该事件。更多事件请参考
[
API参考文档
](
../reference/apis/js-apis-audio.md
)
。
```
js
audioStreamManager
.
on
(
'
audioRendererChange
'
,
(
AudioRendererChangeInfoArray
)
=>
{
for
(
let
i
=
0
;
i
<
AudioRendererChangeInfoArray
.
length
;
i
++
)
{
AudioRendererChangeInfo
=
AudioRendererChangeInfoArray
[
i
];
console
.
info
(
'
## RendererChange on is called for
'
+
i
+
'
##
'
);
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
clientUid
);
console
.
info
(
'
Content for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
content
);
console
.
info
(
'
Stream for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
usage
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
rendererFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererState
);
var
devDescriptor
=
AudioRendererChangeInfo
.
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioRendererChangeInfo
.
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelMasks
);
}
}
});
```
```
js
audioStreamManager
.
on
(
'
audioRendererChange
'
,
(
AudioRendererChangeInfoArray
)
=>
{
for
(
let
i
=
0
;
i
<
AudioRendererChangeInfoArray
.
length
;
i
++
)
{
AudioRendererChangeInfo
=
AudioRendererChangeInfoArray
[
i
];
console
.
info
(
'
## RendererChange on is called for
'
+
i
+
'
##
'
);
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
clientUid
);
console
.
info
(
'
Content for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
content
);
console
.
info
(
'
Stream for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
usage
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
rendererFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererState
);
var
devDescriptor
=
AudioRendererChangeInfo
.
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioRendererChangeInfo
.
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelMasks
);
}
}
});
```
3.
(可选)使用off('audioRendererChange')取消监听音频渲染器更改事件。
```
js
audioStreamManager
.
off
(
'
audioRendererChange
'
);
console
.
info
(
'
######### RendererChange Off is called #########
'
);
```
```
js
audioStreamManager
.
off
(
'
audioRendererChange
'
);
console
.
info
(
'
######### RendererChange Off is called #########
'
);
```
4.
(可选)使用on('audioCapturerChange')监听音频捕获器更改事件。
如果音频流监听应用需要在音频录制应用状态变化、设备变化、音频属性变化时获取通知,可以订阅该事件。更多事件请参考
[
API参考文档
](
../reference/apis/js-apis-audio.md
)
。
```
js
audioStreamManager
.
on
(
'
audioCapturerChange
'
,
(
AudioCapturerChangeInfoArray
)
=>
{
for
(
let
i
=
0
;
i
<
AudioCapturerChangeInfoArray
.
length
;
i
++
)
{
console
.
info
(
'
## audioCapturerChange on is called for element
'
+
i
+
'
##
'
);
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
clientUid
);
console
.
info
(
'
Source for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
source
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
capturerFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerState
);
for
(
let
j
=
0
;
j
<
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelMasks
);
}
}
});
```
```
js
audioStreamManager
.
on
(
'
audioCapturerChange
'
,
(
AudioCapturerChangeInfoArray
)
=>
{
for
(
let
i
=
0
;
i
<
AudioCapturerChangeInfoArray
.
length
;
i
++
)
{
console
.
info
(
'
## audioCapturerChange on is called for element
'
+
i
+
'
##
'
);
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
clientUid
);
console
.
info
(
'
Source for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
source
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
capturerFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerState
);
for
(
let
j
=
0
;
j
<
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelMasks
);
}
}
});
```
5.
(可选)使用off('audioCapturerChange')取消监听音频捕获器更改事件。
```
js
audioStreamManager
.
off
(
'
audioCapturerChange
'
);
console
.
info
(
'
######### CapturerChange Off is called #########
'
);
```
```
js
audioStreamManager
.
off
(
'
audioCapturerChange
'
);
console
.
info
(
'
######### CapturerChange Off is called #########
'
);
```
6.
(可选)使用getCurrentAudioRendererInfoArray()获取当前音频渲染器的信息。
该接口可获取音频流唯一ID,音频播放客户端的UID,音频状态以及音频播放器的其他信息。需注意的是若对第三方音频流监听应用未配置ohos.permission.USE_BLUETOOTH权限,则查询到的设备名称和设备地址为空字符串,若正确配置权限,则显示的实际的设备名称和设备地址信息。
```
js
await
audioStreamManager
.
getCurrentAudioRendererInfoArray
().
then
(
function
(
AudioRendererChangeInfoArray
)
{
console
.
info
(
'
######### Get Promise is called ##########
'
);
if
(
AudioRendererChangeInfoArray
!=
null
)
{
for
(
let
i
=
0
;
i
<
AudioRendererChangeInfoArray
.
length
;
i
++
)
{
AudioRendererChangeInfo
=
AudioRendererChangeInfoArray
[
i
];
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
clientUid
);
console
.
info
(
'
Content
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
content
);
console
.
info
(
'
Stream
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
usage
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
rendererFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererState
);
var
devDescriptor
=
AudioRendererChangeInfo
.
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioRendererChangeInfo
.
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannnelMask:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelMasks
);
}
}
}
}).
catch
((
err
)
=>
{
console
.
log
(
'
getCurrentAudioRendererInfoArray :ERROR:
'
+
err
.
message
);
});
```
```
js
await
audioStreamManager
.
getCurrentAudioRendererInfoArray
().
then
(
function
(
AudioRendererChangeInfoArray
)
{
console
.
info
(
'
######### Get Promise is called ##########
'
);
if
(
AudioRendererChangeInfoArray
!=
null
)
{
for
(
let
i
=
0
;
i
<
AudioRendererChangeInfoArray
.
length
;
i
++
)
{
AudioRendererChangeInfo
=
AudioRendererChangeInfoArray
[
i
];
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
clientUid
);
console
.
info
(
'
Content
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
content
);
console
.
info
(
'
Stream
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
usage
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererInfo
.
rendererFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioRendererChangeInfo
.
rendererState
);
var
devDescriptor
=
AudioRendererChangeInfo
.
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioRendererChangeInfo
.
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
name
);
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannnelMask:
'
+
i
+
'
:
'
+
AudioRendererChangeInfo
.
deviceDescriptors
[
j
].
channelMasks
);
}
}
}
}).
catch
((
err
)
=>
{
console
.
log
(
'
getCurrentAudioRendererInfoArray :ERROR:
'
+
err
.
message
);
});
```
7.
(可选)使用getCurrentAudioCapturerInfoArray()获取当前音频捕获器的信息。
该接口可获取音频流唯一ID,音频录制客户端的UID,音频状态以及音频捕获器的其他信息。需注意的是若对第三方音频流监听应用未配置ohos.permission.USE_BLUETOOTH权限,则查询到的设备名称和设备地址为空字符串,若正确配置权限,则显示的实际的设备名称和设备地址信息。
```
js
await
audioStreamManager
.
getCurrentAudioCapturerInfoArray
().
then
(
function
(
AudioCapturerChangeInfoArray
)
{
console
.
info
(
'
getCurrentAudioCapturerInfoArray: **** Get Promise Called ****
'
);
if
(
AudioCapturerChangeInfoArray
!=
null
)
{
for
(
let
i
=
0
;
i
<
AudioCapturerChangeInfoArray
.
length
;
i
++
)
{
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
clientUid
);
console
.
info
(
'
Source for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
source
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
capturerFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerState
);
var
devDescriptor
=
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
name
)
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelMasks
);
}
}
}
}).
catch
((
err
)
=>
{
console
.
log
(
'
getCurrentAudioCapturerInfoArray :ERROR:
'
+
err
.
message
);
});
```
\ No newline at end of file
```
js
await
audioStreamManager
.
getCurrentAudioCapturerInfoArray
().
then
(
function
(
AudioCapturerChangeInfoArray
)
{
console
.
info
(
'
getCurrentAudioCapturerInfoArray: **** Get Promise Called ****
'
);
if
(
AudioCapturerChangeInfoArray
!=
null
)
{
for
(
let
i
=
0
;
i
<
AudioCapturerChangeInfoArray
.
length
;
i
++
)
{
console
.
info
(
'
StreamId for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
streamId
);
console
.
info
(
'
ClientUid for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
clientUid
);
console
.
info
(
'
Source for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
source
);
console
.
info
(
'
Flag
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerInfo
.
capturerFlags
);
console
.
info
(
'
State for
'
+
i
+
'
is:
'
+
AudioCapturerChangeInfoArray
[
i
].
capturerState
);
var
devDescriptor
=
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
;
for
(
let
j
=
0
;
j
<
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
.
length
;
j
++
)
{
console
.
info
(
'
Id:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
id
);
console
.
info
(
'
Type:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceType
);
console
.
info
(
'
Role:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
deviceRole
);
console
.
info
(
'
Name:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
name
)
console
.
info
(
'
Address:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
address
);
console
.
info
(
'
SampleRates:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
sampleRates
[
0
]);
console
.
info
(
'
ChannelCounts
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelCounts
[
0
]);
console
.
info
(
'
ChannelMask:
'
+
i
+
'
:
'
+
AudioCapturerChangeInfoArray
[
i
].
deviceDescriptors
[
j
].
channelMasks
);
}
}
}
}).
catch
((
err
)
=>
{
console
.
log
(
'
getCurrentAudioCapturerInfoArray :ERROR:
'
+
err
.
message
);
});
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录