Ubuntu录屏时无法录制系统声音,是因默认录屏工具(如GNOME Screen Recorder)仅捕获麦克风输入,未启用PulseAudio的“Monitor of Built-in Audio Analog Stereo”虚拟源。根本原因在于系统音频输出未被正确路由为可录制的监控源。解决方法:先在终端运行 `pactl list sources | grep -A1 "Name\|Description"` 确认监控源名称(通常为 `alsa_output.pci-0000_00_1f.3.analog-stereo.monitor`),再使用`ffmpeg`或OBS Studio——OBS需添加「音频输入捕获」设备并选择对应Monitor源;若用GNOME原生录屏,需安装扩展(如“Screen Recorder”)或切换至支持系统音频的工具(如Kazam配合pavucontrol手动重定向)。务必检查「声音设置→输入」中是否误选了麦克风而非监控设备,并禁用“自动暂停播放”等冲突功能。该问题高频出现于Ubuntu 22.04+ GNOME 42+版本,属权限与音频路由配置双重缺失所致。
1条回答 默认 最新
爱宝妈 2026-02-13 03:05关注一、现象层:Ubuntu 默认录屏无法捕获系统声音(表象确认)
在 Ubuntu 22.04+(GNOME 42+)环境中,用户启用
Ctrl+Alt+Shift+R或通过「Activities → Screen Recording」启动 GNOME 原生录屏工具时,录制视频仅包含麦克风音频(若有),而播放的音乐、浏览器音效、系统提示音等完全缺失。该现象非硬件故障,亦非静音误设,而是音频信号路径未被显式暴露为可采集源。二、机制层:PulseAudio 音频子系统中的“监控源”本质
- PulseAudio 将每个物理输出设备(如
alsa_output.pci-0000_00_1f.3.analog-stereo)自动创建一个对应的虚拟监控源(Monitor Source),命名格式为<output-device>.monitor; - 该 Monitor 源本质是「环回监听」——它镜像输出流的 PCM 数据,但默认不激活、不注册为常规输入设备;
- GNOME Screen Recorder 使用 GStreamer 的
pulsesrc元件,默认仅枚举真实输入源(如alsa_input.pci-0000_00_1f.3.analog-stereo),忽略所有.monitor后缀源,属设计限制而非 Bug。
三、验证层:终端诊断与监控源定位(实操流程)
执行以下命令快速识别可用 Monitor 源:
pactl list sources | grep -A1 "Name\|Description" | grep -E "(Name:|Description:)"典型输出示例:
Name: Description: alsa_input.pci-0000_00_1f.3.analog-stereo Built-in Audio Analog Stereo alsa_output.pci-0000_00_1f.3.analog-stereo.monitor Monitor of Built-in Audio Analog Stereo 四、解决层:多工具适配方案对比(含权限与路由双维度)
下表归纳主流方案的技术路径、依赖项与关键配置点:
工具 核心操作 所需权限/配置 是否需重启服务 OBS Studio 添加「音频输入捕获」→ 选择 .monitor源用户属 audio组;禁用flatpak --nosocket=pulseaudio沙箱否 ffmpeg(CLI) ffmpeg -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor ...确保 PulseAudio server 运行中;无 root 权限要求 否 GNOME + 扩展 安装 Screen Recorder 并启用「Capture System Audio」 需启用 D-Bus 接口访问;扩展需适配 GNOME Shell 版本 是(重载扩展) 五、排错层:高频干扰项与系统级冲突(深度排查清单)
- 检查「设置 → 声音 → 输入」是否误选 Microphone 而非 Monitor of … —— 此处 UI 不显示 .monitor 源,需借助
pavucontrol; - 运行
pavucontrol→ 切换至「Configuration」页,确认 Profile 为 Analog Stereo Duplex(非 Off 或 Headphones); - 在「Recording」页观察录屏进程是否被路由至正确 Monitor 源(常因应用启动顺序导致初始绑定错误);
- 禁用「设置 → 电源 → 自动暂停播放」及第三方音频管理器(如 Pipewire-Wireplumber 的旧版策略);
- 验证 PulseAudio 是否被 Pipewire 替代:运行
ps aux | grep -E "(pipewire|pulseaudio)",若 Pipewire 活跃,则需使用pw-cli替代pactl。
六、架构层:Ubuntu 22.04+ 音频栈演进带来的根本性变化
自 Ubuntu 22.04 起,系统默认启用 Pipewire 作为音频后端(兼容 PulseAudio 协议),但其模块加载策略更严格:
- Pipewire 默认不自动加载
libpipewire-module-loopback,导致 Monitor 源不可见; - GNOME Shell 录屏组件未适配 Pipewire 的
pw-link动态连接模型,仍依赖传统 PulseAudio 枚举逻辑; - 解决方案需双轨并行:① 手动启用 loopback:
pw-loopback -o alsa_output.pci-0000_00_1f.3.analog-stereo;② 或降级回 PulseAudio:sudo apt install pulseaudio+ 禁用 pipewire-pulse。
七、自动化层:一键诊断与修复脚本(生产环境就绪)
以下 Bash 脚本完成三项任务:检测 Monitor 源存在性、验证当前录音设备、输出 OBS/FFmpeg 可用命令:
#!/bin/bash MONITOR=$(pactl list sources | awk '/Name:/ && /monitor/ {print $2; exit}') if [ -z "$MONITOR" ]; then echo "❌ ERROR: No monitor source found. Check audio profile in pavucontrol." else echo "✅ Monitor source detected: $MONITOR" echo "▶ OBS config: Audio Input Capture → Device = '$MONITOR'" echo "▶ FFmpeg cmd: ffmpeg -f pulse -i '$MONITOR' -f x11grab -i :0.0 output.mkv" fi八、演进层:未来路径 —— Wayland + PipeWire + GTK4 录屏原生支持
GNOME 45+ 已在开发
xdg-desktop-portal-gtk的RecordScreenD-Bus API 扩展,支持:- 声明式请求「system-audio」权限(类似摄像头权限弹窗);
- 由 Portal 后端自动注入 Monitor 流至客户端(无需用户手动选设备);
- 与 Flatpak 应用沙箱深度集成,消除
--filesystem=home等临时绕过。
九、可视化层:音频数据流拓扑图(Mermaid)
graph LR A[Application Audio Output] -->|PCM Stream| B[PipeWire Core] B --> C{Output Device
alsa_output.pci-0000_00_1f.3.analog-stereo} B --> D[Loopback Module
alsa_output.pci-0000_00_1f.3.analog-stereo.monitor] D --> E[OBS Studio] D --> F[ffmpeg] D --> G[GNOME Extension Recorder] style D fill:#4CAF50,stroke:#388E3C,color:white十、工程层:企业级部署建议(DevOps/SRE 视角)
- Ansible Playbook 中固化
pipewire-pulse模块启用逻辑,避免人工遗漏; - 为远程支持团队构建 Web UI(基于 Flask + pactl API),实现 Monitor 源状态实时看板;
- 在 CI/CD 流水线中加入音频路由健康检查(如
timeout 5s pactl subscribe | grep -q 'source-added'); - 对 Kiosk 模式设备,预置
/etc/pipewire/pipewire.conf启用default.clock.rate = 48000防止采样率不匹配失真。
解决 无用评论 打赏 举报- PulseAudio 将每个物理输出设备(如