Linux 音频栈

徐小东

2023-01-03

ALSA

ALSA1 https://alsa-project.org/ 是 Advanced Linux Sound Architecture 的简称,它主要包含两部分:

  1. 在内核态,作为内核的音频子系统,提供声卡驱动
  2. 在用户态,提供库(libasound,API)和命令行工具(alsamixer、aplay、arecord 等)

PulseAudio

PulseAudio2 https://www.freedesktop.org/wiki/Software/PulseAudio/ 是一个具备网络能力的声音服务器,它作为接口引擎介于应用程序和 ALSA 之间。

Linux API

Linux API

PulseAudio 的后台 daemon 从一个或多个源(进程、捕捉设备等)接收声音输入,然后将这些声音源重定向到 sinks(声卡、远端 PulseAudio 服务器、其它进程)。

PulseAudio 主要包括以下部分:

JACK

JACK3 https://jackaudio.org/ 是 JACK Audio Connection Kit 的简称,它是一个专业级的声音服务器,在音频和 MIDI 数据间提供实时、低延迟的连接。从 2002 年起,JACK 是 Linux 上专业音频软件的关键基础架构和默认标准。

JACK 包括:

PipeWire

简介

PipeWire4 https://pipewire.org 由 Wim Taymans(Red Hat 工程师,同时也是 GStreamer 的创建者)所开发,它是 Linux 上用于处理音频及视频流的服务器。PipeWire 提供统一的框架访问多媒体设备,而上层应用则通过 PipeWire 的 API 来使用硬件,其主要特点包括:

The multimedia stack

The multimedia stack

PipeWire

PipeWire

PipeWire 主要包括:

场景

优势

针对桌面及专业级音频使用场景提供统一的音频基础架构,终结碎片化的音频现状。

PipeWire 采用 MIT 许可授权。

采用