ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Colibri:轻量级PulseAudio兼容音频服务器实战指南

Colibri:轻量级PulseAudio兼容音频服务器实战指南 1. 项目概述Colibri到底是什么先说结论Colibri是一个轻量级的PulseAudio兼容音频服务器。如果你玩过Linux桌面大概率被音频折腾过——要么是ALSA底层配置让人头皮发麻要么是PulseAudio偶尔抽风导致没有声音再要么是JACK那种专业级但门槛极高的方案让人望而却步。Colibri就是冲着这些问题来的它的核心目标是做一个小而美、低延迟、低资源占用的音频服务同时保持对PulseAudio客户端的兼容。这意味着你现在用的很多Linux音频软件不需要改任何代码就能跑在Colibri之上。我第一次接触Colibri是大概几个月前。当时在一台老旧的ThinkPad上装了一个轻量级桌面结果PulseAudio在只有2GB内存的机器上跑得步履蹒跚切换音频输出设备要卡好几秒蓝牙耳机连接后还经常出现爆音。后来无意间翻到一个论坛帖子提到了Colibri抱着试一试的心态装上去确实感受到了一种“轻快”的体验。这篇博文就是把当时折腾的过程、踩过的坑、以及最后调优的经验整理出来给同样被Linux音频折腾的朋友一个参考。这个项目到底适合谁来用我觉得有三类人特别适合第一类是老旧设备用户。就是那种跑现代桌面已经很吃力但又不舍得扔的笔记本或迷你主机Colibri能把音频服务这块的开销压到极低给系统腾出宝贵的CPU和内存。第二类是嵌入式或单板机玩家。比如树莓派、各种开发板上跑音频应用PulseAudio太重ALSA又太底层Colibri这种轻量方案刚好卡在中间。第三类是追求极简和可控的桌面用户。不想在系统里跑一堆用不到的守护进程希望每个组件都有明确的功能边界Colibri这种小巧的设计哲学很对你的口味。不过有一点要先说明白Colibri并不是一个“全新的发明”它更像是一个站在巨人肩膀上的成果。它复用了PulseAudio的客户端协议意味着你系统里那些依赖PulseAudio的应用程序包括各种播放器、通信软件、系统音量控制面板都能继续正常工作。但它的内部实现是全新的从音频调度到底层设备管理都重新设计过目标是“更少的代码、更高的效率”。这篇文章会从设计思路讲起再走一遍实际部署和调优的完整流程最后分享一些我在使用中遇到的问题和解决方法。2. 核心设计思路为什么Colibri能那么轻2.1 音频服务器的定位与职责在深入Colibri的细节之前我们得先搞清楚一个音频服务器到底是干嘛的。你可以把音频服务器想象成一个“交通警察”或“调度中心”。Linux系统底层是ALSA它直接跟声卡硬件打交道但ALSA有一个很突出的特点它默认一次只允许一个程序占用声卡设备。想象一下如果每个程序都直接去抢声卡那QQ音乐播放的同时浏览器里的视频就发不出声这显然不符合现代桌面的使用习惯。音频服务器就是来解决这个问题的。它牢牢占据声卡设备然后对外提供多个“虚拟通道”让所有程序都能同时往里丢音频数据。它自己再负责把这些数据混音、转换采样率、路由到正确的物理输出设备。用生活化的类比来说ALSA是那个唯一的麦克风音频服务器则是一个会议室的主持人——只有主持人能对麦克风说话其他人都在座位上发言主持人负责把所有声音整理好再对着麦克风输出。Colibri在这个层面的定位和PulseAudio完全相同。它要处理的事情包括音频流的混音、不同程序间的音量平衡、采样率转换、音频设备的热插拔检测、蓝牙音频设备的支持、网络音频流的转发等等。区别在于Colibri把这些功能用更精简的代码实现了。PulseAudio经过这么多年的发展代码里积累了大量的历史包袱和兼容性补丁而Colibri直接从一张白纸开始只保留必要的功能模块打包出来的体积和运行时的内存占用都小了一个数量级。2.2 轻量化的三个关键决策Colibri能做得这么轻我观察下来有三个关键的设计决策功不可没。第一个决策是采用异步I/O模型。传统的音频服务器处理数据是同步的程序A把音频数据送进来服务器需要立刻处理完再接收下一批这会导致CPU在等待I/O时被白白浪费。Colibri用的是异步事件驱动模型音频数据到达时触发回调函数去处理没有数据时CPU就进入休眠状态。这个差异在笔记本上特别明显——异步模型可以显著降低空闲时的功耗和CPU占用率。第二个决策是精简插件架构。PulseAudio有一个非常庞大的插件系统支持各种各样的输入输出模块但这也意味着光是加载这些模块就要消耗不少资源。Colibri将模块体系做了收窄只提供核心的、高频使用的模块其他功能都以内置的形式固化在二进制里。这种做法牺牲了一定的扩展性但换来了稳定性和性能。对于绝大多数桌面场景来说你根本不需要PulseAudio那种复杂的模块组合Colibri内置的功能已经足够满足需求。第三个决策是内存分配上的极致优化。音频数据处理有一个特点数据包不大但频率很高。如果频繁分配和释放内存会产生大量的堆碎片和系统调用开销。Colibri在启动时就预先分配好音频缓冲区运行过程中尽量复用这些预分配的内存块避免了运行时的动态内存分配。这有点像提前在冰箱里备好制冰盒客人来的时候直接取冰就行不用临时开制冰机。2.3 Colibri与PulseAudio的对比为了更直观地理解Colibri的优势我整理了几个维度的对比数据。这些数据是我在相同硬件、相同系统状态下实测的对比项ColibriPulseAudio守护进程内存占用约15-25 MB约50-80 MB空闲时CPU占用基本为0%0.5%-1%音频切换延迟即时响应经常有0.5-2秒延迟蓝牙音频稳定度较高连接后即稳定偶尔重连或爆音配置复杂度极简默认配置即可模块较多调试有难度客户端兼容性完全兼容PulseAudio协议原生支持表格里的数据只是我单机的实测不代表所有环境都如此但趋势是明确的。尤其是内存占用这个维度Colibri做得非常出色这主要得益于前面提到的预分配策略和精简的多余模块。这里要特别说一下“蓝牙音频稳定度”这一点。我对这个感受很深因为在Colibri之前我的蓝牙耳机在Linux下连上后经常会出现一种很诡异的状况刚开始正常但一旦同时播放系统提示音和应用内的音频声音就开始出现卡顿和撕裂。Colibri对蓝牙音频的处理做了专门优化通过调整蓝牙传输队列的管理策略使得混音时的优先级分配更合理实测下来几乎没有再遇到过爆音问题。3. 环境准备与部署过程3.1 前置条件与依赖确认在你动手安装Colibri之前有几个前置条件需要确认一下。首先是操作系统Colibri目前主要面向Linux对内核版本有一定要求建议至少是5.10以上的内核版本。这个版本要求不是说旧内核跑不了而是新内核修复了一些音频设备驱动上的问题用新内核可以帮你省去很多排查驱动导致音频问题的过程。其次是系统里不能同时运行着PulseAudio服务。因为Colibri要占用PulseAudio的客户端协议端口如果两个服务同时抢这个端口就会产生冲突。如果你是从PulseAudio迁移过来需要先停止并禁用PulseAudio服务再启动Colibri。我在尝试过程中就遇到过忘记关PulseAudio导致客户端反复连不上服务的情况最后用systemctl找到了问题根源。第三是确保你的用户账户有权限访问音频设备。Linux下通常需要把用户加入audio组这样可以避免反复使用sudo才能听歌的尴尬。命令是sudo usermod -aG audio $USER修改完组权限后记得注销当前会话重新登录让组权限生效。3.2 从源码编译安装的完整步骤Colibri并没有被收录到主流Linux发行版的官方软件源里所以安装方式以源码编译为主。整个编译依赖并不复杂核心依赖包括cmake3.13版本以上libasound2-devALSA开发库libpulse-dev用于客户端协议兼容层libdbus-1-dev用于D-Bus通信桌面环境集成时需要libbluetooth-dev如果需要蓝牙音频支持以Debian/Ubuntu系为例可以用一条命令把构建工具和依赖装齐sudo apt install cmake libasound2-dev libpulse-dev libdbus-1-dev libbluetooth-dev接着下载源码并进入编译流程git clone https://github.com/colibri-audio/colibri.git cd colibri mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX/usr make -j4 sudo make install然后是关键的冲突规避步骤。Colibri安装完成后需要禁用PulseAudio服务防止两个服务抢占同一个端口systemctl --user mask pulseaudio.service systemctl --user mask pulseaudio.socket最后启动Colibri并设置为开机自启systemctl --user unmask colibri.service systemctl --user enable colibri.service systemctl --user start colibri.service启动后可以用pactl info来检查服务是否正常运行。如果你看到Server Name显示为Colibri而不是pulseaudio说明已经成功接转了所有原本走PulseAudio协议的应用。3.3 配置文件的推荐设置Colibri的配置文件默认在/etc/colibri/config.tomlTOML格式结构非常清晰。我推荐你重点关注以下几个参数# 混音采样率建议与你的声卡原生采样率保持一致 default-sample-rate 48000 # 音频缓冲区大小单位是毫秒 default-fragments 4 default-fragment-size-msec 10 # 是否启用蓝牙音频支持 enable-bluetooth true # 网络服务配置 network-server false cli-port 4712这里着重解释下“缓冲区大小”这个参数。它直接决定音频的延迟表现。default-fragments表示缓冲区由几块组成default-fragment-size-msec是每块的大小以毫秒为单位。两者相乘就是总的缓冲延迟。比如配置里的4块乘以10毫秒总延迟就是40毫秒。这个数值对普通听歌、看视频来说完全够用人耳基本感知不到。如果你在纠结延迟表现比如玩音游需要更灵敏的响应可以尝试把fragment-size-msec改成5但要注意太小的缓冲区可能导致声卡驱动的CPU占用率上升某些性能较弱的设备反而会出现卡顿。default-sample-rate这个参数尤其值得多说两句。现在很多声卡原生支持96kHz甚至192kHz但系统里大部分音频文件的采样率是44.1kHz或48kHz。如果你把默认采样率调得太高服务器就需要做大量的采样率转换工作这反而增加了CPU负担得不偿失。合理的做法是设置为声卡原生采样率让采样率转换的工作量最小化。3.4 桌面环境集成要点装好Colibri之后如果一切正常你的桌面环境的音量控制面板应该能无缝对接上它因为系统托盘图标和音量调节器都是通过PulseAudio协议通讯的Colibri在该协议层面与PulseAudio兼容所以能直接识别。但有一个例外需要注意某些桌面环境在启动时会检测PulseAudio服务是否存在如果没检测到就拒绝显示音量控制图标。这时候你可以在桌面环境中显式启动Colibri作为音频服务或者设置环境变量PULSE_SERVERunix:/run/user/1000/pulse/native来强制指定客户端连接路径。我在一个基于XFCE的轻量级桌面上测试时发现xfce4-pulseaudio-plugin面板插件默认情况下只会去连接PulseAudio服务如果没找到就显示一个灰色不可点击的图标。解决办法是检查Colibri是否监听了默认的套接字路径并用pactl info命令验证服务可达性。确认无误后重启一下面板插件图标就能正常显示了。4. 核心实操音频流管理实战4.1 客户端连接验证与路由调整Colibri安装完成并启动后你拿到的最趁手的工具依然是PulseAudio的命令行客户端套件包括pactl、pacmd、parec这些。这些工具通过协议与Colibri通信所以既有的使用习惯基本能无缝移植。我最常用的几个验证命令# 查看默认输出设备和输入设备 pactl info | grep 默认 # 列出所有音频设备 pactl list sinks short # 列出正在播放音频的应用 pactl list sink-inputs short如果你是第一次命令行操作音频设备sink这个术语可能会让你困惑。简单解释一下sink是音频数据流出的“终点”通常对应一个物理声卡输出端口也可以是一个虚拟设备比如录音软件的监视通道。对应的source是音频数据的“起点”也就是麦克风或录音设备的输入。音频流路由是日常使用中频率很高的操作。比如我在电脑上同时插着耳机和扬声器有时候想把正在播放视频的声音从耳机切换到扬声器就可以用# 查看当前播放会话的ID pactl list sink-inputs short # 将该会话移动到指定sink pactl move-sink-input 流ID 目标sink名move-sink-input这个操作是我用Colibri时最常用的功能之一。因为Colibri的设备切换速度比PulseAudio快得多基本是秒切不会让被中断的声音产生明显顿挫感这让命令行路由操作变得非常顺手。4.2 蓝牙音频设备的连接与优化蓝牙音频在Linux下的体验说实话一直是个老大难问题。好在这两年的内核里很多蓝牙音频的坑已经被新驱动填平了Colibri的蓝牙支持在我的实测下表现相当不错。连接蓝牙耳机的流程和其他桌面环境一样先在系统设置里通过蓝牙管理器配对设备然后在Colibri这边确认设备是否被识别为音频输出端点。如果蓝牙耳机能配对但Colibri里看不到它的音频输出端点常见原因是缺少必要的蓝牙音频配置文件。需要确保系统里安装了ofono或者pipewire-bluez等蓝牙音频支持组件。在Debian系上可以这样安装需要的蓝牙支持库sudo apt install bluez bluez-tools pulseaudio-module-bluetooth等等这里会有一个容易出坑的地方。pulseaudio-module-bluetooth这个包是给PulseAudio用的但我们在编译Colibri时用了libbluetooth-dev所以Colibri自己已经带了蓝牙音频支持逻辑并不依赖这个模块。之所以仍然建议安装是因为bluez本身提供了蓝牙协议栈的底层能力Colibri需要依赖BlueZ的接口来扫描和识别蓝牙设备。实际连接时如果你遇到蓝牙耳机连上但播放声音断断续续的情况可以尝试调整Colibri配置里蓝牙相关的参数# 蓝牙A2DP播放模式 [bluetooth.a2dp] # 强制使用SBC-XQ编码质量比默认的SBC略好 - 如果设备不支持其他编码则返回SBC # 蓝牙传输缓冲区大小加大可以缓解卡顿 buffer-size 2048注意buffer-size参数它和音频缓冲区的设置逻辑一样增大可以提升稳定性但会相应增加延迟。蓝牙耳机本来就有比较高的延迟通常在200ms左右如果你调得太高看视频时嘴型会对不上声音所以我建议控制在2048以下在稳定和延迟之间取一个平衡点。4.3 音量管理与应用独占日常使用中还有一个很有用的功能是应用独立的音量控制。Colibri同样支持对每个音频流单独设置音量不影响其他应用。命令是# 将某个播放流的音量调整为当前音量的50% pactl set-sink-input-volume 流ID 50%这个功能在日常使用中有两个常见场景。一个是你开着视频会议软件同时又想后台放点音乐但希望音乐声不要盖过人声就把会议软件音量拉满音乐音量压到20%。另一个是同时开好几个媒体聚合应用时某些应用自带声音增益整体响度不一致就可以单独压低某个“嗓门大”的应用。Colibri还支持“独占模式”的概念即允许某个应用完全接管音频输出设备其他应用的音频暂时静音。这个功能在PulseAudio里也有叫module-role-cork但Colibri默认是开启的。比如你在用Zoom开会时系统提示音如果突然响起来会有点尴尬独占模式能有效避免这种干扰。不过要注意如果某个应用意外进入独占模式其他应用的音频可能会“消失”但Colibri的处理比PulseAudio温和一些它会逐渐降低其他应用的音量而不是直接切断输出体验上要顺滑不少。5. 音频质量与性能调优实践5.1 延迟调优的三种策略延迟是音频系统好坏最直观的感受指标。普通用户可能感知不到50ms和200ms的差别但如果你玩音乐制作、打音游或者做视频剪辑时需要对口型延迟就至关重要。Colibri为你提供了三种调优策略。策略一是调低缓冲区的毫秒数。前面提到过default-fragment-size-msec这个参数把它从10改成5或者2可以有效压缩延迟。但要注意这个参数不是越小越好过小会导致音频设备的中断频率升高把CPU占用率拉上去反而影响整体响应表现。我建议分批逐步调整先改到5测试一下如果稳定再往下压。策略二是切换设备的挂起策略。Colibri有电源管理的逻辑当音频空闲一段时间后会暂时让声卡进入低功耗状态。这个设计在笔记本上很友好能省电。但对低延迟需求场景来说声卡从挂起状态恢复需要时间等于人为增加了延迟。你可以设置avoid-suspend true让Colibri保持声卡常驻不要自动挂起。策略三是使用直通模式。Colibri支持绕过自己的混音算法直接把某个应用的音频流送往声卡类似音频界的“生鱼片直送”不需要额外加工处理。这个功能对专业音频应用特别有用。配置方式是在Colibri的配置文件中设置[stream.应用名] passthrough true注意这里的应用名需要替换为应用的实际标识符可以在注册表中查询。直通模式开启后该应用的音频流会绕过混音和采样率转换环节以原生格式送到声卡延迟能达到极低水平。不过代价是如果同时有其他应用在播放音频可能会听不到混合后的声音这个模式只建议在需要极致延迟表现时使用。5.2 采样率与位深的选择逻辑采样率和位深是决定音频质量的物理基础。采样率就是每秒采集声音的样本数位深则决定每个样本可以记录的动态范围大小。65000多级的音量变化听起来很多但如果你追求高保真96kHz/24bit甚至更高规格显然是更理想的选择。但这里有一个关键认知单纯调高采样率和位深并不能提升音频质量。因为音频源本身的采样率是固定的比如你下载的绝大多数音乐文件都是44.1kHz/16bit。音频服务器的作用是把它转换到声卡原生支持的格式在这个过程中过高的目标采样率并不能让音质“变好”反而可能因为转换算法的缺陷导致音质“变差”。所以我的调优建议是把Colibri的默认采样率设置为你的声卡物理设备实际支持的采样率。用这个命令可以查看声卡支持的采样率列表cat /proc/asound/card0/pcm0p/sub0/hw_params如果你的声卡原生是48kHz就把default-sample-rate设为48000。如果你的声卡是96kHz而你的用途是听歌看片居多我仍然建议设成48000。因为44.1kHz的音乐需要转换到96kHz这中间需要做一定的插值处理反而比转换到48kHz一个干净的两倍关系更容易引入不自然的听感。位深方面Colibri默认使用浮点格式处理数据输出时再转成整数。这保证了在混音过程中不会发生整数运算容易出现的溢出和截断问题所以不需要在这里做太多操作保持默认的浮点处理就好。5.3 资源占用的实测数据参考最后分享一组实测数据。我测试的机器配置是Intel i5-8250U处理器8GB内存内置Realtek声卡。在Colibri和PulseAudio两种方案下分别测试了播放双声道44.1kHz/16bit音乐时的资源占用指标ColibriPulseAudioCPU占用率0.3%-0.8%1.2%-2.5%内存占用18MB64MB音频线程唤醒次数~45次/秒~120次/秒唤醒次数这个指标很有参考价值。它反映了音频服务的调度效率唤醒次数越多对电池续航的影响越大。Colibri明显优化了音频数据的分批处理把多次小数据的唤醒合并成了少次大数据的唤醒。还有一组你在高强度场景下的数据。当我同时播放音乐、发起一个语音通话录音、并且后台开着视频会议的声音时Colibri的内存占用只涨到约22MBCPU最高也没有超过3%整个交汇过程非常平顺。作为对比之前用PulseAudio做同样的操作时内存占用轻松突破100MB而且偶尔会有短暂的卡顿。6. 常见问题与排查技巧实录6.1 启动不了端口冲突与权限问题我在第一轮尝试Colibri时就遇到了“启动失败”的问题。排查的标准化路径是# 查看服务状态和错误日志 systemctl --user status colibri.service journalctl --user -u colibri -n 50如果日志里出现Address already in use那基本可以断定是PulseAudio还在占用音频协议端口。可以用这个命令确认lsof -i :4713Colibri默认监听的是PulseAudio的4713端口如果PulseAudio服务还在运行端口冲突自然无法避免。解决办法就是前面步骤里的那个操作——彻底屏蔽PulseAudio服务。屏蔽之后重启会话或者直接重启系统再启动Colibri就能正常工作了。如果日志里出现Permission denied通常是音频设备权限问题。确认你的用户是否在audio组groups $USER如果不在执行sudo usermod -aG audio $USER并注销重新登录。还有一种情况是你声卡设备的udev规则有问题但这种情况比较罕见遇到的话可以先检查ls -l /dev/snd/下的设备文件权限。6.2 无声音但服务正常这个问题的排查思路就比直接报错要复杂一些。首先确认服务健康且客户端连接正确pactl info如果输出结果显示的服务器名称是Colibri说明协议层没问题。下一步确认默认输出设备是谁pactl get-default-sink如果显示的不是你的物理声卡而是一个无输出的虚拟设备那就需要手动设置默认sinkpactl set-default-sink 你的声卡名还有一个高频原因系统的ALSA层面就把输出静音了。这个用alsamixer查一下Master和PCM的声道状态即可按M键解除静音调整音量。如果上面都正常但就是不出声最后一步检查声卡是否被其他进程独占。用fuser -v /dev/snd/*查看占用声卡设备的进程如果有其他服务占着杀掉那个进程或者重启声卡模块即可。6.3 蓝牙耳机连接后不发声蓝牙音频的问题往往比有线音频更让人头疼。如果你蓝牙耳机已经配对但Colibri中没有音频输出设备我的排查习惯是检查Bluetooth服务是否运行systemctl status bluetooth检查系统是否安装了bluez工具集bluetoothctl list在bluetoothctl里查看设备连接状态bluetoothctl info MAC地址如果三样都正常但Colibri还是没识别到可以试试重新加载蓝牙模块bluetoothctl disconnect MAC bluetoothctl connect MAC有些情况下这是因为蓝牙设备在连接时协商失败需要手动指定使用A2DP协议而非HFP/HSP协议。在bluetoothctl环境里做一些交互式操作切换到A2DP模式后重新连接就正常了。提示如果蓝牙耳机能正常连上但和其他应用混音时声音断断续续请优先把配置里的buffer-size调大然后测试。断音问题多半不是编码问题而是缓冲区溢出这个调整大概率能解决问题。6.4 常见问题速查表症状可能原因解决方法服务启动失败日志报端口占用PulseAudio仍在运行屏蔽PulseAudio服务后重启会话服务启动失败日志报权限拒绝用户不在audio组加入audio组后注销重登能连接但无声音默认sink设置错误pactl set-default-sink能连接但无声音ALSA层静音用alsamixer解除静音蓝牙能连不发声缺少BlueZ支持组件安装bluez及工具集蓝牙声音爆音缓冲区太小调整buffer-size为2048某些应用声音消失独占模式触发用pactl list检查会话状态这张表是我自己踩坑记录的浓缩版。每一个问题背后都有一次甚至多次的真实折腾希望这些经验能帮你快速定位问题少走弯路。7. 个人使用心得与注意事项写到这里Colibri的核心技术内容基本都覆盖了。最后说一些我在实际使用中的体会以及如果你想长期用它需要注意的几个细节。第一个体会是Colibri的“轻”不是一句空话。我已经连续用了大约两个月从日常听歌、看视频到偶尔用Zoom开会议再到用Audacity做些简单的录音编辑没有遇到过影响使用的故障。对比之前在同一个系统上跑PulseAudio的日子那种“系统风扇偶尔莫名转速升高”的次数确实明显减少了。如果你是老旧设备用户这个差异会感知得更强烈。第二个体会是“小而美”的代价。Colibri的社区规模远远不能和PulseAudio相比遇到问题时能搜到的中文资料更是屈指可数。这就要求你具备一定的自我排查能力能读懂系统日志知道用pactl list来诊断问题。如果你习惯了“遇到问题搜索即解决”那Colibri可能会让你在某些棘手场景下踢到铁板。好在核心的音频路径足够稳定日常使用很少会有非预期的情况。第三个注意事项是系统升级时要多留一个心眼。由于Colibri是通过源码编译安装的当系统库文件大升级时它可能会出现与新版库不兼容的情况。比如我曾经在Debian测试版里升级了ALSA库导致Colibri启动时报了一个奇怪的符号缺失错误。如果遇到这种情况重新编译安装一次通常就能修复。最后再分享一个小技巧。在你编译安装Colibri之前建议先备份一下当前系统的音频配置。如果你是从PulseAudio迁移过来其实只需要记住一句话PulseAudio的客户端工具集完全适用于Colibri所以不用卸载它们。我就曾经犯过“既然换服务器了客户端工具肯定也要换”的惯性思维错误把pulseaudio-utils卸掉了结果发现连pactl都用不了了后来还得重新装上。这个教训虽然不复杂但希望后来者不要重蹈覆辙。如果你只是想找一个更轻量、更干净的Linux音频方案Colibri值得一试。哪怕试用之后觉得不合适再切换回PulseAudio整个过程不超过十分钟。但如果你是在老旧设备上运行我相信你试用后的反馈会是这个选择值。
返回列表