音频采集-windows采集-----01-----技术框架选用
在Windows操作系统上,音频处理技术主要是采用微软提供的相关API,主要有三种:
Wave系列API函数、DirectSound、Core Audio。
我们简单的对以上接口从对操作系统版本的支持,是否支持声卡录音等方面加以说明。
一 WaveIn系列API函数
是在32位的Windows上的一种老旧且过时,用来播放数字音讯的应用程序接口,功能有所局限 ,它无法支持「混和多重音讯流」的功能。主要是用来实现对麦克风输入的采集(使用WaveIn系列API函数)和控制声音的播放(使用后WaveOut系列函数)。
支持XP及之后的Windows系统,支持麦克风输入的采集和控制声音的播放,不支持声卡的采集。
二 DirectSound
可实现多个声音的混合播放。DirectSound可充分使用声卡的内存资源,同时也提供了3D声效算法,模拟出真实的3D立体声。基于directx框架,directx 10之就没有了对directsound的支持,已经将directsound封装到directshow里面去了。
支持XP及之后的Windows系统,支持麦克风,声卡的采集, 控制声音播放。
三 Windows Core Audio API(简称WASAPI)
Windows Vista、Windows 7、Windows server 2008等系统音频系统相比之前的系统有很大的变化,产生了一套新的底层API 即Core Audio API。该低层API为高层API( 如Media Foundation(将要取代DirectShow等高层API)等 )提供服务。相比之前版本的API有如下优势:
● 1. 具有低延时、故障恢复能力的音频流。
● 2. 提高可靠性 ( 将很多音频函数从核心态移到了用户态 )。
● 3. 提高了安全性 (在安全的,低优先级别的线程处理被保护的音频内容)。
● 4. 为单独的音频设备分配了特定的系统级别的规则 (console, multimedia, communications) 。
● 5. 用户可以直接操作相应音频终端设备(Audio Endpoint Devices 如:扬声器、耳机、麦克风、CD播放器)的软件抽象。
Windows Core Audio APIs的组成:
● 1. Multimedia Device (MMDevice) API :该API用于枚举系统中的音频终端设备(Audio Endpoint Devices)。告诉音频客户端程序有哪些音频终端设备以及它们的性能,并且为这些设备创建驱动实例(driver instances)。是最基本的Core Audio API,为其他三个API提供服务。
● 2. EndpointVolume API :使客户端程序能够操作音频终端设备。
● 3. Windows Audio Session API (WASAPI) :使客户端程序能够管理介于程序和音频终端设备之间的音频数据。
● 4. DeviceTopology API :客户端程序使用这个API可直接沿着音频适配器(audio adapters)的硬件设备里的数据通道进入布局特征。是最底层的音频API,可以通过适配器设备(adapter devices)的布局来查看和管理设备中的音频控制。
基于上面分析,并且根据优秀的音视频开源项目obs(obs项目在windows下也是使用wasapi进行音频采集的),我们后续在windows进行音频采集时,采样wasapi接口进行采集。
音视频流媒体资料领取和开发合作,加qq:1282840736