我创建了一个包含 LXDE 和 TightVNCServer 的 docker 镜像。
# Pull base image.
FROM ubuntu
# Install LXDE and VNC server.
RUN apt-get update
RUN apt-get install -y xvfb
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y lxde-core lxterminal tightvncserver
RUN rm -rf /var/lib/apt/lists/*
RUN touch /root/.Xresources
RUN touch /root/.Xauthority
COPY xstartup /root/.vnc/xstartup
RUN chmod +x /root/.vnc/xstartup
#Install Node.js & npm
# Define working directory.
WORKDIR /data
COPY * /data
RUN apt-get install -y ffmpeg
我正在使用这个命令运行这个容器:
docker run -it --rm -v /data:/data -p 5901:5901 -e USER=root ubuntudsktp bash -c "vncserver :1 -geometry 1280x800 -depth 24 && tail -F /root/.vnc/*.log"
我正在使用 VNC 登录到这个容器并运行这个命令来记录整个屏幕:
ffmpeg -f x11grab -i :1.0 output.webm
录制结束后,我打开视频,可以看到视频完全空白(黑屏)。
这也是我尝试运行时的输入
glxinfo
:
# glxinfo | grep "OpenGL renderer"
Error: unable to open display
我还尝试使用以下方式运行它:
DISPLAY=:1 ffmpeg -f x11grab -i :1.0 output.webm
结果是一样的。
我在这里缺少什么?
尝试指定 ffmpeg 的大小和深度。例如:
ffmpeg -f x11grab -video_size 1280x800 -depth 24 -i :1.0 output.webm
还要记住的一件事是 Ubuntu 提供旧版本的 ffmpeg (4.4.2),因此您可能还想带上自己的 ffmpeg 二进制文件或使用不同的 Docker 基础。