CentOS如何通过Compton实现屏幕共享
导读:Compton 与屏幕共享的关系与前提 Compton 是 X11 的窗口合成器,负责阴影、透明度、淡入淡出等合成效果。它不提供“屏幕共享/录屏”功能本身,但某些视频会议或录屏工具(如 OBS Studio、ffmpeg、WebRTC/浏...
Compton 与屏幕共享的关系与前提
- Compton 是 X11 的窗口合成器,负责阴影、透明度、淡入淡出等合成效果。它不提供“屏幕共享/录屏”功能本身,但某些视频会议或录屏工具(如 OBS Studio、ffmpeg、WebRTC/浏览器 getDisplayMedia)需要合成器处于运行状态,才能捕获到带透明/特效的窗口内容或全局画面。
- 共享方式通常分为两类:
- 应用层捕获(浏览器、OBS 选择“屏幕/窗口”源);
- 系统层捕获(如 PipeWire/WirePlumber 的屏幕共享,配合 xdg-desktop-portal)。
- 在 Wayland 会话下,Compton 不参与;屏幕共享由 KWin(KDE)/ Mutter(GNOME)/ wlroots 合成器与 xdg-desktop-portal 提供。本文以 X11 + Compton 为主,并在最后给出 Wayland 的替代方案。
在 CentOS 上正确安装与启用 Compton
- 安装(以 CentOS 7/8/Stream 为例):
- 启用 EPEL(如尚未启用):
sudo yum install -y epel-release - 安装 Compton:
sudo yum install -y compton(或sudo dnf install -y compton)
- 启用 EPEL(如尚未启用):
- 准备配置(建议放在用户目录):
- 创建目录:
mkdir -p ~/.config - 写入最小可用配置:
nano ~/.config/compton.conf,内容示例:backend = "glx"; vsync = true; shadow = false; # 共享时关闭阴影可减少编码压力 fading = false; # 共享时关闭淡入淡出 mark-wwin-focused = true; mark-osd-focused = true; use-damage = true;
- 创建目录:
- 启动与自启(会话级,推荐):
- 手动启动:
compton --config ~/.config/compton.conf & - 图形会话自启:将上面命令加入你的桌面会话的“启动应用程序”(Openbox、i3、Xfce、GNOME Xorg 会话的启动脚本等)。
- 手动启动:
- 验证:
ps aux | grep compton应能看到进程;- 若使用 systemd 用户会话,可创建用户级服务(非系统级)以确保登录后启动。
让屏幕共享工具正确捕获画面
- OBS Studio(X11)
- 源选择:Display Capture(全屏)/ Window Capture(窗口);
- 若窗口捕获不到特效或透明内容,优先用 Display Capture;
- 视频编码器选择 x264/NVENC/VA-API,码率按带宽与清晰度调整。
- ffmpeg(命令行)
- 全屏捕获:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 -c:v libx264 -preset fast -pix_fmt yuv420p out.mp4 - 窗口捕获(需窗口 ID):
ffmpeg -f x11grab -video_size 1280x720 -framerate 30 -i :0.0+100,200 -c:v libx264 -preset fast -pix_fmt yuv420p win.mp4
- 全屏捕获:
- 浏览器/WebRTC(如 meet.google.com、zoom.us 网页端)
- 选择“屏幕”或“窗口”共享;
- 若出现黑屏/不更新,优先尝试“全屏共享”,或在浏览器设置中允许“硬件加速”。
常见故障排查与优化
- 黑屏或画面不更新
- 关闭 Compton 的阴影/淡入淡出(见上例配置);
- 在 OBS 中改用 Display Capture;
- 确保应用不是离屏渲染(某些应用需开启“允许透明/使用合成器”)。
- 性能差、CPU 占用高
- 使用 OpenGL 后端(glx),开启
use-damage; - 降低捕获分辨率/帧率;
- 优先使用硬件编码(NVENC/VA-API)。
- 使用 OpenGL 后端(glx),开启
- 多显示器画面撕裂或错位
- 确保
vsync = true; - 在 OBS 中为目标显示器单独创建场景与源。
- 确保
- 需要开机即启用 Compton
- 不建议使用系统级 systemd 服务(可能早于会话启动而失败);
- 使用会话级自启(窗口管理器/桌面环境的“启动程序”)更稳妥。
Wayland 环境的替代做法
- 若使用 GNOME(Wayland)/ KDE(Wayland)/ Sway,Compton 不参与合成;屏幕共享由 xdg-desktop-portal 提供:
- 安装/启用:xdg-desktop-portal 与相应后端(如 xdg-desktop-portal-gnome/kde/wlr);
- 浏览器/应用选择“屏幕/窗口”共享时,会通过 PipeWire 获取画面;
- OBS Studio 需启用 PipeWire 源(在“设置 → 系统 → 管道线(PipeWire)”启用),然后选择“屏幕捕获(PipeWire)”。
以上步骤可让 Compton 在 CentOS 的 X11 会话中稳定工作,并为常见的屏幕共享/录屏工具提供可捕获的合成画面;在 Wayland 下则改用 xdg-desktop-portal + PipeWire 的方案完成相同目标。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS如何通过Compton实现屏幕共享
本文地址: https://pptw.com/jishu/787662.html
