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桌面,直接用桌面的自动启动功能会更省心,因为它是在用户登录后图形会话完全就绪时启动的:
- 创建
~/.config/autostart/startRec.desktop文件:
nano ~/.config/autostart/startRec.desktop
- 写入以下内容:
[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
- 保存退出,下次登录时脚本就会自动运行,不会再出现DISPLAY相关的错误。
备注:内容来源于stack exchange,提问作者Ильдар Нажмутдинов
相关产品推荐
相关产品推荐

