RTC SDK為您提供音視頻設備測試的方法,您可以在音視頻通話前檢查當前設備上的攝像頭,麥克風以及揚聲器等音視頻設備是否正常工作,以保證音視頻通話質量。通過閱讀本文,您可以了解音視頻設備測試的方法。
攝像頭測試
創建SDK實例后,應用層可以調用接口
getCameraList
獲取當前設備上所有可用攝像頭,返回設備列表中包含設備ID及設備名稱,應用層可選擇通過設備名稱或設備ID進行判斷,并通過接口setCurrentCamera
或setCurrentCameraWithID
選中需要測試的設備。NSArray *camList = [self.engine getCameraList]; // 設備名稱 NSString *matchDeviceName = /*測試設備名*/; int camCount = (int)camList.count; for(int i=0; i<camCount; i++) { DingRtcDeviceInfo *deviceInfo = [camList objectAtIndex:i]; NSString *name = deviceInfo.deviceName; if ([name isEqualToString:matchDeviceName]) { [self.engine setCurrentCamera:matchDeviceName]; } } // 設備ID NSString *matchDeviceId = /*測試設備ID*/; int camCount = (int)camList.count; for(int i=0; i<camCount; i++) { DingRtcDeviceInfo *deviceInfo = [camList objectAtIndex:i]; NSString *deviceID = deviceInfo.deviceId; if ([deviceID isEqualToString:matchDeviceId]) { [self.engine setCurrentCameraWithID:matchDeviceId]; } }
設置測試攝像頭設備之后,通過setLocalViewConfig接口可以設置預覽顯示窗口,再啟動預覽,即可通過預覽畫面是否正常顯示,判斷當前攝像頭設備是否正常工作。
// 設置預覽窗口 DingRtcVideoCanvas *canvas = [[DingRtcVideoCanvas alloc] init]; canvas.renderMode = renderMode; canvas.view = (DingRtcOSView *)view; canvas.mirrorMode = mirrorMode; [self.engine setLocalViewConfig:canvas forTrack:DingRtcVideoTrackCamera]; [self.engine startPreview];
麥克風測試
開始測試前,通過接口
getAudioCaptures
獲取當前設備上所有可用麥克風設備,返回設備列表中將同時返回設備ID及設備名稱,應用層可選擇通過設備名稱調用接口startTestAudioRecordWithName
進行麥克風測試,測試開始后會收到onAudioDeviceRecordLevel
回調,接收麥克風測試時返回的音量值。// 開始測試 NSArray *audioList = [self.engine getAudioCaptures]; DingRtcDeviceInfo *deviceInfo = audioList[0]; [self.engine startTestAudioRecordWithName:deviceInfo.deviceName]; // 回調 - (void)onAudioDeviceRecordLevel:(int)level { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"麥克風音量值:%d", level); }); }
測試完成后,調用接口stopTestAudioRecord停止麥克風測試。
[self.engine stopTestAudioRecord];
揚聲器測試
開始測試前,通過接口
getAudioRenderers
獲取當前設備上所有可用揚聲器設備,返回設備列表中將同時返回設備ID及設備名稱,應用層可選擇通過設備名稱調用接口startTestAudioPlayoutWithName
進行揚聲器測試,測試開始后會收到onAudioDevicePlayoutLevel
回調,接收揚聲器測試時返回的音量值。// 開始測試 NSArray *speakerList = [self.engine getAudioRenderers]; DingRtcDeviceInfo *deviceInfo = speakerList[0]; [self.engine startTestAudioPlayoutWithName:deviceInfo.deviceName filePath:path loopCycles:0]; // 回調 - (void)onAudioDevicePlayoutLevel:(int)level { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"揚聲器音量值:%d", level); }); }
說明目前揚聲器測試播放文件只支持Wave格式,傳入路徑需要為絕對路徑,并保證可以被讀取訪問。
測試完成或接收到文件播放結束事件回調后,調用stopTestAudioPlayout接口停止揚聲器測試。
[self.engine stopTestAudioPlayout];