yangcan 发表于 2022-5-23 20:09:59

Waveout、DirectSound、Kernel Streaming、WASAPI和ASIO工作原理归纳

本帖最后由 yangcan 于 2022-5-23 20:32 编辑

我把HIFI发烧友常用音频播放软件(Album Player或foobar2000)的输出模式大体归纳为两类:


[*]一、ASIO专用音频通道(第三方的音频流输入输出规范)
   Audio Stream Input Output 专业的音频流输入输出接口, 由Steinberg提出这个标准规范,其主要目的是降低音频数据延迟,同时作为系统中独立的音频通道可以避开DirectSound或其他通道,使得ASIO下的程序可以不受系统中正在运行的其它程序的干扰,本质上是为摆脱OS对硬件的集中控制,以实现在音频处理软件与硬件之间进行多通道传输的同时将系统对音频流的响应时间降至最短。



[*]二、WDM音频通道 (微软的规范)


[*]WaveOut(微软早期提出的波形音频流输出方式,兼容性最好)
[*]DirectSound(直接声音,简称DS, 微软Direct X的一个组合部分, 兼容性也不错,并且在有多个程序需要播放音频的时候能提供高可靠的保障)
[*]Kernel Streaming(内核流,简称KS, 是微软底层使用的音频流方式,实际上它是以设法绕过Windows操作系统对硬件设备的控制,直接与硬件端口取得通讯的思路来实现提高响应速度的目的,能够起到输出效率高、输出延时低的效果)
[*]WASAPI( Windows Audio Session API,Win7之上版本均已集成, WASAPI允许传输未经修改的比特流到音频设备,从而避开SRC(Sample Rate Conversion,取样率转换器)的干扰。 也就是说,图里的KMixer(混音器)已经被微软淘汰了,微软想让WASAPI做的其实就是想让它像ASIO那样,运行在它下面的程序可以不受系统中正在运行的其它程序的干扰。)

工作原理图(google翻译)
打个比方好理解,音频数据流是车辆,Windows上的音频输出模式是道路,那么:


WaveOut、DirectSound就好比最一般的通用车道,各类车型混行(音乐播放软件、系统提示音、浏览器音频等可以混合发声),音乐播放软件的音频流必然受到其它音频的干扰,损害音质。

Kernel Streaming 或 WASAPI好比微软在通用车道上规划出的一条公交车专用车道,只允许公交车走,不允许其它车辆走,公交车就是Album Player或foobar2000之类专业音频软件的音频流,减少了其它车辆的干扰。


ASIO好比是轨道交通公司在现有的城市道路上新建了一条全封闭的公交专用车道BRT,专供BRT公交车使用,拒绝其它一切车辆驶入,Album Player或foobar2000之类专业音频软件的音频流就行驶在BRT专线上,完全排除了其它车辆的干扰。

注:
查看原帖请移步 中关村在线李靖
的文章
https://sound.zol.com.cn/528/5283168_all.html


chunshuo 发表于 2022-5-26 08:30:44

现在已经都转到网播去了。
感觉PC Low-fi的人越来越少了。
页: [1]
查看完整版本: Waveout、DirectSound、Kernel Streaming、WASAPI和ASIO工作原理归纳

耳机俱乐部微信
耳机俱乐部微信