之前我发的帖子『 OSX 系统真是鸡,数字光纤音频系统竟然不能调音量, win10 可以』
https://v2ex.com/t/242238
是我起的标题钓鱼引起撕逼是我的错,在这里道歉
我重新开个帖子,上个帖子不要再回复了
解码»»数模转换»»播放设备
但是这个路线只是手机系统这种只有一个音源输出的才适用
桌面系统同一时间可以多音源同时输出,这就要把多个音频合成一个这个过程叫混音( Audio Mixing )
但混音是输出时候只能是一种声音 所以要经过采样率转换就是 SRC(Sample Rate Convertor )
所以路线就变成了
解码»»SRC»»混音»»数模转换»»播放设备
最初的一代经典 Sound Blaster 16 等声卡,本身都支持多路輸出混合
所以当时 linux/unix 的声卡驱动 OSS 『 Open Sound System 』把混音工作扔给了声卡
但是随着发展(主要是因为钱)新的声卡包括集成声卡把混音功能扔回了软件
就是因为 OSS 不支持混音才引起 linux 音频系统 10 多年的撕逼
先是 KDE/GNOME 分别出了声音服务 aRts 和 ESD 先做混音在把音频送给 OSS
但是问题来了,虽然大多数程序都能使用其中一个,但不能同时用两个,这是因为 OSS 的混音问题,甚至与另一个直接用 OSS 的程序冲突。为了解决这种状况出现了 SDL/libao 等封装库。
之后 OSS 开发人员走了闭源路线,业界震惊了,一些 Linux 开发人员就像 LiberOffice 那样决定创造另一个解决方案,但是他们没重写 OSS ,而是推出了一个全新的 API 也就是 ALSA(Advanced Linux Sound Architecture),为了兼容又写了个 OSS 模拟器,然后大家纷纷发现用 OSS 模拟器效果比直接用 ALSA 好,但是用了模拟器又不能混音了 233 ,在 ALSA 把 OSSv3 剔除 linux 内核后, OSSv4 重新开源杀了回来,后来 ubuntu 和 Fedora 引入一个新的"先进的"的声音服务 PulseAudio ,这个混音质量好而且任何 API 都可以输出到 PulseAudio ,但是其实是只鸡延时巨大
win 都是微软说了算自然没有 linux 的破事
xp 和之前用的是 MME(Multi Media Extension)和 DirectSound
而且当年 Intel 等五家公司出的 AC97 标准导致音频要 SCR 成 48khz 然后才输出默认是无法摆脱 SRC 影响的基本就是鸡,延时还高到爆炸 MME 要 200~500ms , DirectSound 也要 50~100ms
vista 之后出了新的 API 叫 WASAPI
这个新 API 有 2 种模式共享模式和独占模式
共享模式和之前大体流程没变,但是有优化而且附加了一个系统级的混音器可以各程序单独调音量,相信大家都用过
而独占模式是为了音频损失和延时问题引入的,方法是直接跳过 SRC 和混音直接数模转换,但是代价就是瞬间变成手机系统只能一个音源发声,这个功能在声音设备高级选项卡里面设置。
大多数 PCHIFI 演示时候用的都是 MAC 演示的
而 OS X 早期设计时就是为专业音讯产业服务,是出了名的延时低,音质好。
1. 在引入混音后引起的 SRC 音质损失与延时问题 linux 撕逼这些年也没结果微软是直接阉割掉了才解决的,那 Core Audio 是如何在不阉割混响解决问题的?
2. 我在用播放软件的时候也有调音量功能,要是我一开始就没用最大音量,岂不是也损失了音频的位数和动态范围,这样情况为何苹果还在意数字音频音量调节会损失位数和动态范围?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.