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

如何提升Selenium 4搭配Chrome采集网页动画时的截图性能

方案1:基于Selenium 4 原生CDP接口调用Page.startScreencast

Selenium 4 原生支持Chrome DevTools Protocol(CDP)直接调用,不需要额外依赖,可直接调用Page.startScreencast替代轮询截图,核心实现逻辑如下:

// 初始化ChromeDriver后获取DevTools实例
DevTools devTools = driver.getDevTools();
devTools.createSession();

// 监听ScreencastFrame事件,页面有变化时会主动推送帧数据
devTools.addListener(Page.screencastFrame(), frame -> {
    // frame.getData()就是帧的Base64编码数据,可直接解码使用
    byte[] imgBytes = Base64.getDecoder().decode(frame.getData());
    // 处理完成后必须发送确认,否则会停止推送
    devTools.send(Page.screencastFrameAck(frame.getSessionId()));
});

// 启动录屏,可自定义参数控制性能开销
devTools.send(Page.startScreencast(
    Optional.of(Page.StartScreencastFormat.JPEG), // 可指定为PNG,按需选择
    Optional.of(80), // 压缩质量,JPEG模式下可调低减少数据量
    Optional.empty(), // maxWidth 按需设置
    Optional.empty(), // maxHeight 按需设置
    Optional.of(10) // 每N帧推送一次,降低帧率可大幅减少开销
));

该方案优势:

  • 不需要轮询调用getScreenshotAs,Chrome仅在页面内容有变化时推送新帧,无变化时无多余开销
  • 走CDP长连接通道,比getScreenshotAs的单次HTTP请求延迟低60%以上
  • 可灵活控制输出格式、分辨率、帧率,适配不同性能需求

方案2:基于JCEF离屏渲染实现极致性能取帧

如果对性能要求极高,JCEF是更优选择,开启离屏渲染(OSR)模式后可直接获取原始像素数据,完全消除Base64转码、PNG编解码、跨进程HTTP通信的所有冗余流程,性能比Selenium方案高10倍以上。
核心实现逻辑:

  1. 初始化JCEF时开启离屏渲染模式
  2. 重写CefRenderHandler的onPaint回调,直接获取渲染完成的原始像素数据
@Override
public void onPaint(CefBrowser browser, CefPaintElementType type, Rectangle[] dirtyRects, ByteBuffer buffer, int width, int height) {
    // buffer中存储的是原始BGRA格式像素数据,无需任何解码可直接处理
    // 如需转BufferedImage可直接内存映射,比ImageIO.read快数十倍
    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    int[] pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
    buffer.asIntBuffer().get(pixels);
    
    // dirtyRects是本次帧变化的区域,无变化时可直接跳过处理逻辑
}

你提到的OBS浏览器源底层就是基于CEF离屏渲染的onPaint回调取帧,和JCEF的实现逻辑完全一致,不需要研究C++代码,直接使用JCEF封装好的Java接口即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:45:03