以采集声卡为例子(即采集系统扬声器),采集麦克风的暂时没试过,大家可以自己调试。

环境:
系统:windows。
编译器:vs2022。

代码逻辑:

  1. 初始化com组件。
  2. CoCreateInstance(),枚举你的音频设备。
  3. pEnumerator->GetDefaultAudioEndpoint(),获取默认音频采集设备。
  4. pDevice->Activate(),创建IAudioClient interface引用。
  5. pAudioClient->Initialize(),初始化音频流。
  6. pAudioClient->GetService(),获取其它 WASAPI interfaces的引用。
  7. pAudioClient->Start(),开启音频流。
  8. 循环调用GetNextPacketSize()、GetBuffer()、ReleaseBuffer()来获取音频数据。

注意事项:
● 当程序启动时,电脑没有播放音频的话,是会阻塞在WaitForMultipleObjects()函数的,当我们播放一个带有音频的文件时,那么程序此时采集到数据。
● 本程序采集到的数据,先会缓存到一个大的数组,最后采集到指定的大小时,退出while,然后保存为wave文件。

在这里插入图片描述

生成的wav文件可以使用vlc或者ffplay直接播放。

在这里插入图片描述

音视频流媒体资料领取和开发合作,加qq:1282840736

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐