You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下systemd用户服务开机自动启动ffmpeg录屏报错":0.0: Protocol not found"的问题咨询

Ubuntu 20.04下systemd用户服务开机自动启动ffmpeg录屏报错":0.0: Protocol not found"的问题咨询

我来帮你分析这个问题并给出可行的解决方案:

问题原因

你遇到的核心问题是环境变量和启动时机不匹配:

  • 当你手动运行命令或者手动启动systemd服务时,你已经处于用户的X11图形会话中,系统会自动设置DISPLAY=:0.0环境变量,同时X11服务器已经就绪,ffmpeg能正常找到对应的显示设备。
  • 但开机自动启动systemd用户服务时,服务是在用户图形会话初始化之前启动的,此时DISPLAY环境变量不存在,X11服务器也还没运行,所以ffmpeg会报错找不到:0.0这个协议。

解决方案

方案一:修改systemd用户服务配置,适配X11会话时机

编辑你的startRec.service文件:

systemctl edit --user --force --full startRec.service

替换为以下内容:

[Unit]
Description=Recording
# 确保服务在图形会话就绪后启动
After=graphical-session.target
Requires=graphical-session.target

[Service]
# 设置DISPLAY和XAUTHORITY环境变量,确保ffmpeg能访问X11
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/user/.Xauthority
# 保持原有的启动脚本路径
ExecStart=/home/user/record/startRec.sh
Type=simple

[Install]
WantedBy=graphical-session.target

修改后重新加载服务并启用:

systemctl --user daemon-reload
systemctl --user enable startRec.service

方案二:在启动脚本中添加X11就绪等待逻辑

如果不想修改systemd配置,可以在startRec.sh脚本开头添加等待X11服务器就绪的代码,确保ffmpeg运行前DISPLAY已经可用:

#!/bin/bash
# 等待X11服务器就绪
until xset q &>/dev/null; do
    sleep 1
done

# 原有的ffmpeg命令
resolution="1920x1080" # 可根据你的屏幕分辨率修改
path="/home/user/record" # 确保这个目录存在
ffmpeg -video_size $resolution -f x11grab -r 5 -re -i :0.0 -c:v libx264 -pix_fmt yuv420p -crf 40 -vf "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf:text='%{pts\:gmtime\:$(($(date +%s)+18000))\:%d-%m-%Y %T}':fontcolor=white@0.8:x=7:y=7:borderw=2:bordercolor=black" -preset ultrafast $path/desktop.mkv >> desktop.log 2>&1 < /dev/null &

注意给脚本添加执行权限:

chmod +x /home/user/record/startRec.sh

方案三:使用桌面环境的自动启动项(最简单的方法)

对于Ubuntu的GNOME桌面,直接用桌面的自动启动功能会更省心,因为它是在用户登录后图形会话完全就绪时启动的:

  1. 创建~/.config/autostart/startRec.desktop文件:
nano ~/.config/autostart/startRec.desktop
  1. 写入以下内容:
[Desktop Entry]
Type=Application
Name=Screen Recorder
Comment=Auto start screen recording on login
Exec=/home/user/record/startRec.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
  1. 保存退出,下次登录时脚本就会自动运行,不会再出现DISPLAY相关的错误。

备注:内容来源于stack exchange,提问作者Ильдар Нажмутдинов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:48:04