产品百科 | RTC Windows SDK 音视频设备测试说明

简介: RTC SDK 为您提供音视频设备测试的方法,您可以在音视频通话前检查当前设备上的摄像头,麦克风以及扬声器等音视频设备是否正常工作,以保证音视频通话质量。通过阅读本文,您可以了解音视频设备测试的方法。

摄像头测试

  1. 创建 SDK 实例后,应用层可以调用接口 getCameraList,获取当前设备上所有可用摄像头,返回设备列表中将同时返回设备 ID 及设备名称,应用层可选择通过设备名称或设备 ID 进行判断,并通过接口 setCurrentCamerasetCurrentCameraById 选中需要测试的设备。
AliRtcEngine *pEngine = AliRtcEngine::sharedInstance(listener, "");
AliRtcDeviceList cameraList;
pEngine->getCameraList(cameraList);
#if defined(USE_DEVIC_NAME)
// 可以通过遍历所有摄像头设备名,查找并设置需要测试的设备
std::string matchDeviceName = /*测试设备名*/;
for (size_t i = 0; i != cameraList.deviceNames.size(); ++i)
{
    AliRtc::String deviceName = cameraList.deviceNames.at(i);
    if(std::string(deviceName.c_str()) == matchDeviceName)
    {
        // 设置测试设备
        pEngine->setCurrentCamera(deviceName);
    }    
}
#else
// 可以通过遍历所有摄像头设备ID并查找需要测试的设备
std::string matchDeviceId = /*测试设备ID*/;
for (size_t i = 0; i != cameraList.deviceIds.size(); ++i)
{
    AliRtc::String deviceId = cameraList.deviceIds.at(i);
    if(std::string(deviceId.c_str()) == matchDeviceId)
    {
        // 设置测试设备
        pEngine->setCurrentCameraById(deviceId);
    }    
}
#endif
  1. 设置测试摄像头设备之后,通过 setLocalViewConfig 接口可以设置预览显示窗口,然后启动预览,即可通过预览画面是否正常显示,判断当前摄像头设备是否正常工作。
// 设置预览窗口
AliVideoCanvas canvas;
canvas.hWnd = /*预览显示窗口句柄*/;
pEngine->setLocalViewConfig(canvas, AliRtcVideoTrackCamera);
// 开启预览检查,确认显示是否正常
pEngine->startPreview();

麦克风测试

  1. 创建 SDK 实例后,应用层需要继承 AliMediaDeviceTestEventListener 接口,实现 OnAudioDeviceRecordLevel 回调,用于接收麦克风测试时返回的音量值。再通过 SDK 接口 createMediaDeviceTestInterface 创建设备测试实例,并在创建时传入回调监听实例。
// 继承实现设备测试事件回调
class DeviceTestEventListener : public AliMediaDeviceTestEventListener
{
public:
    virtual void OnAudioDeviceRecordLevel(int level)
    {
        // 处理麦克风测试音量回调
    }   
};
// 创建SDK实例及设备测试实例
AliRtcEngine *pEngine = AliRtcEngine::sharedInstance(listener, "");
DeviceTestEventListener* deviceTestListener = new DeviceTestEventListener();
AliMediaDeviceTestInterface *pTestInterface = pEngine->createMediaDeviceTestInterface(deviceTestListener);
  1. 开始测试前,通过接口 getAudioCaptures 获取当前设备上所有可用麦克风设备,返回设备列表中将同时返回设备 ID 及设备名称,应用层可选择通过设备名或设备 ID 判断并选择需要测试的设备。
AliRtcDeviceList audioCaptureList;
pEngine->getAudioCaptures(audioCaptureList);
#if defined(USE_DEVIC_NAME)
// 可以通过遍历所有麦克风设备名,查找需要测试的设备
std::string matchDeviceName = /*测试设备名*/;
for (size_t i = 0; i != audioCaptureList.deviceNames.size(); ++i)
{
    AliRtc::String deviceName = audioCaptureList.deviceNames.at(i);
    matchDeviceName = ...  
}
#else
// 可以通过遍历所有麦克风设备ID,查找需要测试的设备
std::string matchDeviceId = /*测试设备ID*/;
for (size_t i = 0; i != audioCaptureList.deviceIds.size(); ++i)
{
    AliRtc::String deviceId = audioCaptureList.deviceIds.at(i);
    matchDeviceId = ...  
}
#endif
  1. 选中测试设备后,调用麦克风测试接口启动测试,接口中需要指明测试设备名称或者设备 ID,以及音量回调频率(传入 0 为默认频率,每 20ms 回调一次音量)。测试开始后,提示您对麦克风设备说话,并将 OnAudioDeviceRecordLevel 回调中返回的采集音量值进行展示,判断当前麦克风设备是否正常工作。
// 启动麦克风设备测试
#if defined(USE_DEVIC_NAME)
pTestInterface->StartTestAudioRecord(matchDeviceName.c_str(), 0);
#else
pTestInterface->StartTestAudioRecordById(matchDeviceName.c_str(), 0); 
#endif
  1. 测试完成后,调用接口 StopTestAudioRecord 停止麦克风测试,并释放设备测试功能实例。
pTestInterface->StopTestAudioRecord();
pTestInterface->Release();
pTestInterface = nullptr;

扬声器测试

  1. 创建 SDK 引擎实例后,应用层需要继承 AliMediaDeviceTestEventListener 接口,实现 OnAudioDevicePlayoutLevel 回调,用于接收扬声器测试时返回的音量值,同时实现 OnAudioDevicePlayoutEnd 回调,用于接收播放文件结束事件。然后通过 SDK 接口 createMediaDeviceTestInterface 创建设备测试实例,并在创建时传入回调监听实例。
// 继承实现设备测试事件回调
class DeviceTestEventListener : public AliMediaDeviceTestEventListener
{
public:
    virtual void OnAudioDevicePlayoutLevel(int level)
    {
        // 处理扬声器测试音量回调
    }
    virtual void OnAudioDevicePlayoutEnd()
    {
        // 处理扬声器测试播放结束事件
    }
};
// 创建SDK实例及设备测试实例
AliRtcEngine *pEngine = AliRtcEngine::sharedInstance(listener, "");
DeviceTestEventListener* deviceTestListener = new DeviceTestEventListener();
AliMediaDeviceTestInterface *pTestInterface = pEngine->createMediaDeviceTestInterface(deviceTestListener);
  1. 开始测试前,通过接口 getAudioCaptures 获取当前设备上所有可用扬声器,返回设备列表中将同时返回设备 ID 及设备名称,应用层可选择通过设备名或设备 ID 判断并选中需要测试的设备。
AliRtcDeviceList audioRenderList;
pEngine->getAudioRenderers(audioRenderList);
#if defined(USE_DEVIC_NAME)
// 可以通过遍历所有麦克风设备名,查找需要测试的设备
std::string matchDeviceName = /*测试设备名*/;
for (size_t i = 0; i != audioRenderList.deviceNames.size(); ++i)
{
    AliRtc::String deviceName = audioRenderList.deviceNames.at(i);
    matchDeviceName = ...  
}
#else
// 也可以通过遍历所有麦克风设备ID,查找需要测试的设备
std::string matchDeviceId = /*测试设备ID*/;
for (size_t i = 0; i != audioRenderList.deviceIds.size(); ++i)
{
    AliRtc::String deviceId = audioRenderList.deviceIds.at(i);
    matchDeviceId = ...  
}
#endif
  1. 选中测试设备后,调用扬声器测试接口启动测试,接口中需要指明测试设备名称或设备 ID,音量回调频率(传入 0 为默认频率,每 20ms 回调一次音量),以及测试使用的音频文件路径。开始测试后,可以将 OnAudioDevicePlayoutLevel 回调中返回的采集音量值进行展示,同时关注扬声器中播放的测试音频,判断当前扬声器设备是否正常工作。
// 启动麦克风设备测试
#if defined(USE_DEVIC_NAME)
pTestInterface->StartTestAudioPlayout(matchDeviceName.c_str(), 0, wavPath.c_str());
#else
pTestInterface->StartTestAudioPlayoutById(matchDeviceId.c_str(), 0, wavPath.c_str());
#endif

  1. 说明 目前扬声器测试播放文件只支持 Wave 格式,传入路径需要为绝对路径,并保证可以被读取访问。
  2. 测试完成或接收到文件播放结束事件回调后,调用 StopTestAudioRecord 接口停止麦克风测试,并释放设备测试功能实例。
pTestInterface->StopTestAudioPlayout();
pTestInterface->Release();
pTestInterface = nullptr;


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

image.png

相关文章
|
11天前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
39 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
11天前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
27 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
3天前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
12 0
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
71 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
4月前
|
API 开发工具 C#
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
本文将介绍,ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
|
3月前
|
人工智能 测试技术 Windows
Windows 竞技场:面向下一代AI Agent的测试集
【10月更文挑战第25天】随着人工智能的发展,大型语言模型(LLMs)在多模态任务中展现出巨大潜力。为解决传统基准测试的局限性,研究人员提出了Windows Agent Arena,一个在真实Windows操作系统中评估AI代理性能的通用环境。该环境包含150多个多样化任务,支持快速并行化评估。研究团队还推出了多模态代理Navi,在Windows领域测试中成功率达到19.5%。尽管存在局限性,Windows Agent Arena仍为AI代理的评估和研究提供了新机遇。
81 3
|
4月前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
113 2
|
6月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之支持的离线SDK有哪些
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
视觉智能开放平台产品使用合集之支持的离线SDK有哪些
|
4月前
|
API 开发工具 UED
在 UWP 中使用 Windows App SDK
【10月更文挑战第17天】在UWP中使用Windows App SDK可增强应用功能和性能。首先了解SDK特性,接着安装Visual Studio 2022及以上版本,并从微软官网下载安装SDK。配置项目时,确保目标版本支持SDK,添加SDK引用后即可使用新API提升应用体验。开发过程中应充分利用调试工具进行测试,确保应用的兼容性和稳定性。
|
4月前
|
安全 Shell Linux
内网渗透测试基础——Windows PowerShell篇
内网渗透测试基础——Windows PowerShell篇
169 0

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 7
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
  • 8
    用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
  • 9
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 10
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架