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%
验证步骤
- 启动容器后,通过VNC连接Selenium容器的5900端口,确认屏幕分辨率为1920x1080
- 运行测试后查看生成的视频,确认全屏内容被完整捕获
内容的提问来源于stack exchange,提问作者Kalfja
相关产品推荐
相关产品推荐

