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

Docker中FFmpeg录制Selenium测试无法全屏捕获问题求助

解决Docker环境下Selenium测试视频录制不完整问题

问题分析

你已在Selenium和视频录制容器中设置SCREEN_WIDTH=1920与SCREEN_HEIGHT=1080,但录制视频仅捕获约70%的屏幕区域,页面渲染正常说明问题出在视频捕获环节的参数匹配或Selenium容器屏幕初始化不彻底。

解决方案

对启动脚本做两处关键修改,确保屏幕分辨率在Selenium容器中正确生效,同时强制FFmpeg按指定尺寸捕获全屏:

1. 完善Selenium容器的屏幕初始化参数

添加SCREEN_DEPTH=24环境变量,确保XVFB(虚拟显示服务)正确初始化1920x1080的全尺寸屏幕,避免因屏幕深度不匹配导致的渲染/捕获异常。

2. 强制视频录制容器按指定分辨率捕获

在视频录制容器中添加VIDEO_WIDTH=1920、VIDEO_HEIGHT=1080,并通过FFMPEG_ARGS明确指定FFmpeg的捕获分辨率参数,覆盖容器默认的自适应逻辑。

修改后的完整Windows批处理命令

docker stop %inContainerName%%inDockerSeleniumPort%
docker rm %inContainerName%%inDockerSeleniumPort%
docker stop %inVideoContainerName%%inDockerSeleniumPort%
docker rm %inVideoContainerName%%inDockerSeleniumPort%
docker network rm %inNetworkName%%inDockerSeleniumPort%

docker network create %inNetworkName%%inDockerSeleniumPort%
# 修改:添加SCREEN_DEPTH=24确保屏幕初始化完整
docker run -e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 -e SCREEN_DEPTH=24 ^
--env NO_PROXY="xxxx" --env HTTP_PROXY="xxx" --env HTTPS_PROXY="xxx" ^
-d -p %inDockerSeleniumPort%:4444 -p %inDockerVNCPort%:5900 ^
--net %inNetworkName%%inDockerSeleniumPort% ^
--name %inContainerName%%inDockerSeleniumPort% ^
--shm-size="2g" %inSeleniumImageName%

# 修改:添加VIDEO_WIDTH/VIDEO_HEIGHT和FFMPEG_ARGS强制捕获分辨率
docker run -e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 ^
-e VIDEO_WIDTH=1920 -e VIDEO_HEIGHT=1080 ^
-e FFMPEG_ARGS="-video_size 1920x1080 -framerate 25" ^
-e FILE_NAME=video%inDockerSeleniumPort%.mp4 ^
-e DISPLAY_CONTAINER_NAME=selenium%inDockerSeleniumPort% ^
-d --net %inNetworkName%%inDockerSeleniumPort% ^
--name %inVideoContainerName%%inDockerSeleniumPort% ^
-v C:\ProgramData\Docker\tmp\videos:/videos %inVideoImageName%

验证步骤

  1. 启动容器后,通过VNC连接Selenium容器的5900端口,确认屏幕分辨率为1920x1080
  2. 运行测试后查看生成的视频,确认全屏内容被完整捕获

内容的提问来源于stack exchange,提问作者Kalfja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:25:17