HarmonyOS 如何指定不同的录音设备进行录音?
如何指定不同的录音设备进行录音?
目前正在进行APPHarmonyOS化的开发工作,在原有Unity工程中,有选择不同输入设备进行录音的项目需求,比如手机的麦克风,和蓝牙耳机的麦克风。实现如下:
// Unity代码:
Microphone.Start(deviceName, true, nLenSec, nDeviceFreq);
其中deviceName,即输入设备名称。
1,我司在查阅贵司API文档时(API11 Developer Preview1),使用了audio.AudioCapturer进行录音操作,在使用audio.createAudioCapturer函数时,发现传入参数,没有具体输入设备的指定,其中的audio.SourceType,枚举为:
SOURCE_TYPE_INVALID,SOURCE_TYPE_MIC,SOURCE_TYPE_VOICE_RECOGNITION...,
感觉不是指的哪个具体设备。
2,再次查阅文档,发现如下代码,可返回手机麦克风和蓝牙麦克风:
this.audioRoutingManager.getDevices(audio.DeviceFlag.INPUT_DEVICES_FLAG).then((data: audio.AudioDeviceDescriptors) => {
console.info('Promise returned to indicate that the device list is obtained.');
data.forEach((value: audio.AudioDeviceDescriptor)=>{
console.info('device:' + value.deviceType + ' display:'+value.displayName + ' name:'+value.name + ' sample:' + value.sampleRates + ' channel:' + value.channelCounts);
});
});
3,也能监听到设备的拔插:
// 监听音频设备状态变化
this.audioRoutingManager.on('deviceChange', audio.DeviceFlag.INPUT_DEVICES_FLAG, (deviceChanged: audio.DeviceChangeAction) => {
console.info('device change type : ' + deviceChanged.type); // 设备连接状态变化,0为连接,1为断开连接
console.info('device descriptor size : ' + deviceChanged.deviceDescriptors.length);
console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceRole); // 设备角色
console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceType); // 设备类型
});
当前总结:但仅仅获取这些输入设备列表对我们项目需求还不够,感知设备的拔插,或许可以适时刷新输入设备,但对最终需求还是不能满足。我们的目的,是指定输入设备,比如指定蓝牙耳机麦克风,而不是手机麦克风,进行录音。【但未发现相关API,如有,希望能指出。】
另外,我们想了另一种可能,即HarmonyOS系统,会不会通过在系统界面,选择设备,来指定输入设备的呢?但我们进行了选择音频设备的操作(视频看附件),进行录音后,发现输入设备还是手机麦克风在执行(大概是这样,不太确定),这与我们的预期不符。此外,即使做最好的打算,假设确实这样操作能使输入设备变更,我们也不知道通过什么API来获取当前音频设备已变更的通知,如果有,能否告知,我们再进一步测试。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 用AudioCapturer实例录音之后保存录音文件,之前保存的录音文件是不可访问的
918浏览 • 1回复 待解决
HarmonyOS 录音上传文件
1183浏览 • 1回复 待解决
HarmonyOS 录音音量获取
865浏览 • 1回复 待解决
HarmonyOS 录音,希望能有录音Demo
1145浏览 • 1回复 待解决
HarmonyOS录音音频如何存放,以及遍历
2337浏览 • 1回复 待解决
HarmonyOS AudioCapturer录音后的文件无法播放
989浏览 • 1回复 待解决
HarmonyOS录音报错问题
1409浏览 • 1回复 待解决
HarmonyOS 录音功能问题
1101浏览 • 1回复 待解决
HarmonyOS 录音发送Uint8Array
797浏览 • 1回复 待解决
HarmonyOS 录音和语音播放相关demo
903浏览 • 1回复 待解决
HarmonyOS 应用拉起系统录音机
1963浏览 • 1回复 待解决
HarmonyOS 工程机怎么获取系统的录音文件
1483浏览 • 1回复 待解决
录音时如何获取 当前输入的音量大小
6499浏览 • 1回复 待解决
HarmonyOS 录音后的文件无法使用,是坏掉的
734浏览 • 1回复 待解决
HarmonyOS 关于获取录音音频的时长的问题咨询
1029浏览 • 1回复 待解决
HarmonyOS native层如何实现录音和录屏能力?
1014浏览 • 1回复 待解决
HarmonyOS 使用AVRecorder录音时,怎么获取音量
792浏览 • 1回复 待解决
js fa怎么实现录音功能呢?
6421浏览 • 1回复 待解决
HarmonyOS AudioCapturer录音后生成的wav文件无法播放
848浏览 • 1回复 待解决
HarmonyOS的media.AVRecorder支持设置最大录音文件大小和录音质量(类似quality字段,1到100)吗?
1013浏览 • 1回复 待解决
HarmonyOS 如何实现实时录音转文字
1173浏览 • 1回复 待解决
HarmonyOS 使用AudioCapturer录音过程中闪退
1540浏览 • 1回复 待解决
求大佬告知如何实现录音监听
3122浏览 • 1回复 待解决
HarmonyOS 录音wav文件使用浏览器无法打开
1139浏览 • 1回复 待解决
HarmonyOS 上传本地录音文件参数设置问题
856浏览 • 1回复 待解决
当前三方应用不支持指定录音输入设备,仅系统应用支持此能力。
对于audioRoutingManager.on('preferredInputDeviceChangeForCapturerInfo')这个接口:
这个接口监听的是优先级最高的录音设备,并不是当前录音设备,它的含义是,应用传入一个AudioCapturerInfo,监听的是,如果应用使用这个AudioCapturerInfo开始录音,那么它会使用什么录音设备,因为不同的AudioCapturerInfo可能对应不同的录音设备,所以并不一定就是当前设备(不过大部分场景二者是一致的)。