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之后,添加声卡采集设备
  1. #define BRAC_SO_AUDIO_PLAYCAPTURE        79        ///< 音频播放采集参数设置(参数为int型,0 关闭[默认],1 开启)

  2. BOOL bEnableNativeCapture = TRUE;
  3. BRAC_SetSDKOption(BRAC_SO_AUDIO_PLAYCAPTURE,(PCHAR)&bEnableNativeCapture, sizeof(bEnableNativeCapture));
复制代码
2、给每个声音采集设备绑定流号
  1. #define BRAC_STREAMINFO_AUDIODEVICENAME   195  ///< 音频采集设备名称

  2. #define NATIVE_AUDIO_PLAY_CAPTURE_INDEX   5    // 为了方便对方请求时指定声卡采集流,这里固定声卡采集设备的流号为5

  3. // 获取音频采集设备的列表数量
  4. DWORD dwDeviceNum = 0;
  5. BRAC_EnumAudioCapture(NULL, dwDeviceNum);                                                        

  6. // 获取设备列表名称
  7. char **pDeviceName = new char *[dwDeviceNum];
  8. BRAC_EnumAudioCapture((TCHAR **)pDeviceName, dwDeviceNum);        

  9. // 给声卡采集的设备绑定指定流号,其他的设备从0开始按顺序编号
  10. for (DWORD i = 0; i < dwDeviceNum; i++){
  11.         char pName[255] = {0};
  12.         strcpy_s(pName, 255, pDeviceName);
  13.         if(strstr(pName, "Native Audio Play Capture"))                                       
  14.                 BRAC_SetUserStreamInfo(-1, NATIVE_AUDIO_PLAY_CAPTURE_INDEX, BRAC_STREAMINFO_AUDIODEVICENAME, pName, strlen(pName));
  15.         else
  16.                 BRAC_SetUserStreamInfo(-1, i, BRAC_STREAMINFO_AUDIODEVICENAME, pName, strlen(pName));
  17. }
  18. for (DWORD i = 0; i < dwDeviceNum; i++){
  19.         GlobalFree(pDeviceName);
  20. }
  21. delete[] pDeviceName;
  22. pDeviceName = NULL;
复制代码
3、打开声卡采集设备采集音频
  1. BRAC_UserSpeakControlEx(-1, TRUE, NATIVE_AUDIO_PLAY_CAPTURE_INDEX);
复制代码

作者: admin    时间: 2019-2-25 09:16
谢谢,正是我需要的.




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3