设备诊断
简介
Pano 桌面端和浏览器 SDK 支持设备测试功能,可用于对视频采集设备、音频录制和播放设备进行诊断。
SDK 相关接口,请查看下列介绍:
Windows (C++)
视频采集设备测试
请查看 快速接入 文档的章节:获取视频采集设备 和 本地预览,通过预览视频采集画面测试其工作情况。
音频录制和播放设备测试
通过 RtcEngine 实例的 getAudioDeviceManager 方法获取音频设备管理器(AudioDeviceManager)。
- 通过其
enumerateRecordDevices方法枚举音频录制设备,enumeratePlayoutDevices方法枚举音频播放设备。 - 通过其
startDeviceTest方法进行环回测试(将采集的声音通过本地播放出来),通过stopDeviceTest方法停止该测试。 - 通过其
startRecordDeviceTest方法测试音频录制设备,通过stopRecordDeviceTest方法停止该测试。 - 通过其
startPlayoutDeviceTest方法测试音频播放设备(需要通过filename参数传入测试用的本地音频文件的完整路径,支持的音频文件格式:mp3, aac, wav),通过stopPlayoutDeviceTest方法停止该测试。 - 通过其
getTestRecordingLevel方法获取测试期间的音频录制强度值(取值范围:0 - 32767),用于展示录制强度指示条。 - 通过其
getTestPlayoutLevel方法获取测试期间的音频播放强度值(取值范围:0 - 32767),用于展示播放强度指示条。
可以在加入频道前进行测试,也可以在加入频道后测试,但是除上述接口在加入频道前后均可调用外,
AudioDeviceManager的以下接口仅可在加入频道成功后调用:
setRecordDeviceVolume/getRecordDeviceVolumesetPlayoutDeviceVolume/getPlayoutDeviceVolumegetRecordingLevel/getPlayoutLevel
macOS (Objective-C)
获取设备
- 通过
PanoRtcEngineKit的类方法+ engineWithConfig:delegate:初始化实例。 - 通过
PanoRtcEngineKit实例的- enumerateDevices:方法枚举设备,将返回PanoRtcDeviceInfo数组,包含deviceId设备唯一标识 和deviceName设备名称。 - 通过
PanoRtcEngineKit实例的- setDevice:withType:方法设置需要使用的设备,参数deviceId传入设备唯一标识,参数type为kPanoDeviceVideoCamera时表示视频采集设备,为kPanoDeviceAudioRecord时表示音频录制设备,为kPanoDeviceAudioPlayout时表示音频播放设备。
视频采集设备测试
通过 PanoRtcEngineKit 实例的 - startPreview:withView:config: 方法 或 - startPreview:withDelegate:profile: 方法预览视频采集画面测试其工作情况。
两个方法的区别在于:前者附带渲染视图,后者附带外置渲染器。
音频录制和播放设备测试
- 通过
PanoRtcEngineKit实例的- startAudioDeviceTestWithRecord:playout:方法进行环回测试(将采集的声音通过本地播放出来),通过- stopAudioDeviceTest方法停止该测试。 - 通过
PanoRtcEngineKit实例的- startRecordDeviceTest:方法测试音频录制设备,通过- stopRecordDeviceTest方法停止该测试。 - 通过
PanoRtcEngineKit实例的- startPlayoutDeviceTest:filename:方法测试音频播放设备(需要通过filename参数传入测试用的本地音频文件的完整路径,支持的音频文件格式:mp3, aac, wav),通过- stopPlayoutDeviceTest方法停止该测试。 - 通过
PanoRtcEngineKit实例的- getTestRecordingLevel方法获取测试期间的音频录制强度值(取值范围:0 - 32767),用于展示录制强度指示条。 - 通过
PanoRtcEngineKit实例的- getTestPlayoutLevel方法获取测试期间的音频播放强度值(取值范围:0 - 32767),用于展示播放强度指示条。
Electron
视频采集设备测试
请查看 快速接入 文档的章节:获取视频采集设备 和 本地预览,通过预览视频采集画面测试其工作情况。
音频录制和播放设备测试
通过 RtcEngine 实例的 audioDeviceMgr() 方法获取音频设备管理器。
- 通过其
getRecordDeviceList()方法获取音频录制设备列表,getPlayoutDeviceList()方法获取音频播放设备列表。 - 通过其
startRecordDeviceTest(deviceId)方法测试音频录制设备,通过stopRecordDeviceTest()方法停止该测试。 - 通过其
startPlayoutDeviceTest(deviceId, fileName)方法测试音频播放设备(需要通过filename参数传入测试用的本地音频文件的完整路径,支持的音频文件格式:mp3, aac, wav),通过stopPlayoutDeviceTest()方法停止该测试。 - 通过其
getTestRecordingLevel()方法获取测试期间的音频录制强度值(取值范围:0 - 32767),用于展示录制强度指示条。 - 通过其
getTestPlayoutLevel()方法获取测试期间的音频播放强度值(取值范围:0 - 32767),用于展示播放强度指示条。
可以在加入频道前进行测试,也可以在加入频道后测试,但是除上述接口在加入频道前后均可调用外,音频设备管理器的以下接口仅可在加入频道成功后调用:
setRecordDeviceVolume/getRecordDeviceVolumesetPlayoutDeviceVolume/getPlayoutDeviceVolumegetRecordingLevel/getPlayoutLevel
示例代码:
let audioDeviceMgr = rtcEngine.audioDeviceMgr(); // 获取音频设备管理器
let recordDeviceList = audioDeviceMgr.getRecordDeviceList(); // 获取音频录制设备列表
console.log('recordDeviceList: ', recordDeviceList);
let playoutDeviceList = audioDeviceMgr.getPlayoutDeviceList(); // 获取音频播放设备列表
console.log('playoutDeviceList: ', playoutDeviceList);
let recordDeviceId = recordDeviceList[0].deviceId; // 实际使用时请注意选择设备
audioDeviceMgr.startRecordDeviceTest(recordDeviceId); // 测试音频录制设备
let interval = setInterval(()=>{
let testRecordingLevel = audioDeviceMgr.getTestRecordingLevel(); // 获取测试期间的音频录制强度值
console.info('testRecordingLevel: ', testRecordingLevel);
}, 500);
// clearInterval(interval);
// audioDeviceMgr.stopRecordDeviceTest(); // 停止测试音频录制设备
let playoutDeviceId = playoutDeviceList[1].deviceId; // 实际使用时请注意选择设备
audioDeviceMgr.startPlayoutDeviceTest(playoutDeviceId, 'Path\\FileName.mp3'); // 测试音频播放设备
interval = setInterval(()=>{
let testPlayoutLevel = audioDeviceMgr.getTestPlayoutLevel(); // 获取测试期间的音频播放强度值
console.info('testPlayoutLevel: ', testPlayoutLevel);
}, 500);
// clearInterval(interval);
// audioDeviceMgr.stopPlayoutDeviceTest(); // 停止测试音频播放设备
Web
视频采集设备测试
请查看 快速接入 文档的章节:获取摄像头列表 和 本地预览,通过预览视频采集画面测试其工作情况。
音频录制和播放设备测试
通过 RtcEngine 实例的 getMics 方法获取麦克风列表,通过 startRecordDeviceTest 方法开启麦克风测试,stopRecordDeviceTest 方法停止麦克风测试。
Web SDK 暂未提供测试扬声器的方法。
示例代码:
// 获取麦克风列表
this.rtcEngine.getMics(
devices => {
console.log("getMics 列表:", devices);
this.deviceId = devices[0].deviceId; // 此处出于演示目的,直接使用第 0 个元素,实际场景请按需处理
},
error => { console.error("getMics 出现错误:", error); }
);
// 开启麦克风测试
this.rtcEngine.startRecordDeviceTest(
this.deviceId,
obj => {
this.micTestID = obj.micTest;
console.log("RecordDeviceTest 测试结果:", obj.audioLevel);
},
error => { console.error("startRecordDeviceTest 出现错误:", error); }
);
// 停止麦克风测试
let result = this.rtcEngine.stopRecordDeviceTest(this.micTestID);
console.log("stopRecordDeviceTest 调用结果:", result);
