无头镀铬捕捉屏幕视频或动画

t_i*_*_io 8 video google-chrome ffmpeg headless screen-capture

我尝试从网站捕获一些动画并使用ffmpeg将它们拼接在一起.据我所知,文档startScreencast是要走的路.

如果我明白这一点,我就可以开始截屏了

await Page.startScreencast({format: 'png', everyNthFrame: 1});

用它来听每个传入的帧

Page.screencastFrame(image =>{
  const {data, metadata} = image;
  console.log(metadata);
});
Run Code Online (Sandbox Code Playgroud)

但它永远不会打印出来.所以我认为它没有被调用.

我用这样的东西归档了我的目标:

let counter = 0;
while(counter < 500){
  await Page.startScreencast({format: 'png', everyNthFrame: 1});
  const {data, metadata} = await Page.screencastFrame();
  console.log(metadata);
  counter += 1;
}
Run Code Online (Sandbox Code Playgroud)

这感觉就像一个非高效的黑客.那么有关如何使用startScreencastscreencastFrame正确的任何建议?

t_i*_*_io 8

每个收到的帧也必须被确认.

    await Page.navigate({url: 'http://www.goodboydigital.com/pixijs/examples/12-2/'});
    await Page.loadEventFired();
    await Page.startScreencast({format: 'png', everyNthFrame: 1});

    let counter = 0;
    while(counter < 100){
      const {data, metadata, sessionId} = await Page.screencastFrame();
      console.log(metadata);
      await Page.screencastFrameAck({sessionId: sessionId});
    }
Run Code Online (Sandbox Code Playgroud)

链接到github问题以获取详细说明.