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

使用FFmpeg录制Docker化LXDE桌面时出现黑屏问题求助

使用FFmpeg录制Docker化LXDE桌面时出现黑屏问题求助

看起来你在Docker容器里用FFmpeg录制LXDE桌面时碰到了黑屏的麻烦,我来帮你梳理下可能的问题点和对应的解决办法:

一、先排查最关键的xstartup配置问题

你的Dockerfile里复制了xstartup到/root/.vnc/xstartup,但如果这个文件没有正确启动LXDE会话,那VNC连接后其实没有真正加载桌面环境,录屏自然是黑屏。

请确保你的xstartup内容包含启动LXDE的命令,参考正确配置:

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
autocutsel -fork
# 关键:启动LXDE桌面会话
startlxde &

你已经执行了chmod +x /root/.vnc/xstartup,但最好再确认下权限是755,避免因为权限不足无法执行。

二、确认DISPLAY环境变量的传递与X服务器状态

  1. 虽然你尝试了DISPLAY=:1 ffmpeg...,但可以先验证X服务器是否正常运行:
    在容器内执行:

    xset q -display :1
    

    如果能输出X服务器的状态信息,说明:1这个显示是正常的;如果报错,那VNC服务器可能没正确启动,去查看/root/.vnc/*.log日志找具体错误(比如端口占用、依赖缺失)。

  2. 确保FFmpeg运行时的环境确实指向VNC的显示:
    你可以在启动容器的命令里提前导出DISPLAY变量,比如修改docker run命令:

    docker run -it --rm -v /data:/data -p 5901:5901 -e USER=root ubuntudsktp  bash -c "export DISPLAY=:1 && vncserver :1 -geometry 1280x800 -depth 24 && tail -F /root/.vnc/*.log"
    

    之后在VNC客户端登录后执行FFmpeg命令,就不需要再手动指定DISPLAY了。

三、调整FFmpeg的录屏参数

试试明确指定录屏的分辨率(和你VNC启动的-geometry一致),避免分辨率不匹配导致的黑屏:

ffmpeg -f x11grab -video_size 1280x800 -i :1.0 -c:v libvpx-vp9 output.webm

如果还是不行,可以加上-draw_mouse 0(可选,关闭鼠标录制)或者指定帧率-r 25,看看是否能解决。

四、关于glxinfo报错的说明

你执行glxinfo | grep "OpenGL renderer"时报错无法打开显示,这是因为TightVNC Server默认不支持GLX(OpenGL扩展),这个问题和录屏黑屏没有直接关联,如果你不需要硬件加速的话,可以暂时忽略;如果需要GLX支持,你可能需要换用支持GLX的VNC服务器(比如TurboVNC),不过这对录屏来说不是必须的。

最后一步:查看VNC日志定位问题

去容器里查看/root/.vnc/*.log的内容,看看有没有LXDE启动失败、X服务器初始化错误之类的日志,这些信息能帮你快速定位根本问题。

备注:内容来源于stack exchange,提问作者Itzik.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:24:10