AnyChat技术支持论坛
标题:
声卡播放音频采集开发指南
[打印本页]
作者:
杨家超
时间:
2018-9-17 17:05
标题:
声卡播放音频采集开发指南
本帖最后由 杨家超 于 2018-9-18 20:41 编辑
AnyChat一直致力于为行业客户提供音视频整体解决方案。我们注意到,在某些特定的业务场景中,会需要采集声卡播放的声音(之前只能采集麦克风的声音)。比如:远程教育应用场景中,老师需要给学生播放课件,其中课件的声音就需要从声卡播放中采集出来。经过AnyChat技术团队的深入研发,目前在Windows平台的最新版本 AnyChatSDK r7554中已经提供出这种能力,并且已开放相应的API接口。
一、使用方式
1、SDK内部嵌入“Native Audio Play Capture”声卡采集设备
2、上层可以给声音
采集设备绑定相应的流号,根据绑定的流号对设备进行开/关操作
二、示例代码
1、初始化SDK之后,添加声卡采集设备
#define BRAC_SO_AUDIO_PLAYCAPTURE 79 ///< 音频播放采集参数设置(参数为int型,0 关闭[默认],1 开启)
BOOL bEnableNativeCapture = TRUE;
BRAC_SetSDKOption(BRAC_SO_AUDIO_PLAYCAPTURE,(PCHAR)&bEnableNativeCapture, sizeof(bEnableNativeCapture));
复制代码
2、给每个声音采集设备绑定流号
#define BRAC_STREAMINFO_AUDIODEVICENAME 195 ///< 音频采集设备名称
#define NATIVE_AUDIO_PLAY_CAPTURE_INDEX 5 // 为了方便对方请求时指定声卡采集流,这里固定声卡采集设备的流号为5
// 获取音频采集设备的列表数量
DWORD dwDeviceNum = 0;
BRAC_EnumAudioCapture(NULL, dwDeviceNum);
// 获取设备列表名称
char **pDeviceName = new char *[dwDeviceNum];
BRAC_EnumAudioCapture((TCHAR **)pDeviceName, dwDeviceNum);
// 给声卡采集的设备绑定指定流号,其他的设备从0开始按顺序编号
for (DWORD i = 0; i < dwDeviceNum; i++){
char pName[255] = {0};
strcpy_s(pName, 255, pDeviceName);
if(strstr(pName, "Native Audio Play Capture"))
BRAC_SetUserStreamInfo(-1, NATIVE_AUDIO_PLAY_CAPTURE_INDEX, BRAC_STREAMINFO_AUDIODEVICENAME, pName, strlen(pName));
else
BRAC_SetUserStreamInfo(-1, i, BRAC_STREAMINFO_AUDIODEVICENAME, pName, strlen(pName));
}
for (DWORD i = 0; i < dwDeviceNum; i++){
GlobalFree(pDeviceName);
}
delete[] pDeviceName;
pDeviceName = NULL;
复制代码
3、打开声卡采集设备采集音频
BRAC_UserSpeakControlEx(-1, TRUE, NATIVE_AUDIO_PLAY_CAPTURE_INDEX);
复制代码
作者:
admin
时间:
2019-2-25 09:16
谢谢,正是我需要的.
欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/)
Powered by Discuz! X3