在 Debian 上用 Compton 实现屏幕录制
关键说明
- Compton/Picom 是 X11 的窗口合成器,负责窗口合成、阴影、透明度等效果;它不负责录屏。录屏应由 ffmpeg、OBS 等工具完成。合成器在录制时的主要价值是提供离屏缓冲与更一致的帧呈现,有助于减少某些场景下的画面撕裂或闪烁。若使用 Wayland,Compton 不参与合成,需用相应 Wayland 工具录屏。
安装与准备
- 安装合成器(Debian 12 仓库中的 compton 可能较旧,功能与后续维护更好的 picom 相近;两者用法基本一致):
- sudo apt update && sudo apt install compton
- 安装录屏工具(示例使用 ffmpeg;也可用 obs-studio):
- 确认会话类型:
- echo $XDG_SESSION_TYPE # 输出 x11 表示 X11;wayland 表示 Wayland
方案一 使用 ffmpeg 直接录制(推荐)
- 全屏录制(X11):
- ffmpeg -f x11grab -i :0.0 -f pulse -i default -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k out.mp4
- 指定区域录制(示例:x=1366、y=768、宽=1280、高=720):
- ffmpeg -f x11grab -i :0.0+1366,768 -f pulse -i default -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k out.mp4
- 录制当前活动窗口(先用 xwininfo 获取窗口 ID):
- xwininfo | grep “Window id”
- ffmpeg -f x11grab -i :0.0+, -f pulse -i default -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k out.mp4
- 说明:
- 音频设备名可用 pactl list sources short 查看并替换 default。
- 若遇到画面撕裂/闪烁,可先确保合成器运行,再按下一节优化参数。
方案二 使用 OBS Studio 录制
- 安装:sudo apt install obs-studio
- 在 OBS 中添加“X11 屏幕捕获”或“窗口捕获”源,选择目标显示器或窗口,设置视频码率与音频后开始录制。
- 合成器对 OBS 的作用与 ffmpeg 类似:提供离屏缓冲与更稳定的帧呈现,便于获得更平滑的录屏效果。
减少闪烁与卡顿的配置建议
- 使用硬件加速后端:在 Compton 配置中优先使用 backend = “glx”(若出现异常,可尝试 xrender)。示例配置片段:
- backend = “glx”
- vsync = true
- shadow = false # 录屏时可关闭阴影以降低开销
- 录屏时缓解闪烁的参数:
- 启动 Compton 加入 --benchmark 1000000(会降低 CPU 占用波动,但会增加功耗),示例:compton --benchmark 1000000 &
- 驱动与刷新率:
- 确保显卡驱动正确安装并更新;与显示器刷新率匹配可减少撕裂。
- 使用 NVIDIA 显卡时,可在驱动层面启用同步(如 ForceFullCompositionPipeline)以进一步减少撕裂,再视情况在 Compton 中关闭 vsync 以避免双重同步带来的问题。
常见问题与排查
- 找不到窗口坐标或区域:用 xwininfo 获取准确的 x、y、宽、高;多显示器下注意主显示器偏移。
- 没有声音:确认 PulseAudio 正在运行,ffmpeg 使用 -f pulse -i default,或在 OBS 中选择正确的音频源。
- Wayland 会话:Compton 不参与合成,请使用支持 Wayland 的录屏方案(如 OBS Studio 的 PipeWire 捕获,或 wf-recorder)。
- 性能或画面问题:优先尝试 backend = “glx”、关闭阴影/透明、更新驱动与系统、必要时使用 --benchmark 参数。