我尝试从网站上捕获一些动画,并使用ffmpeg将它们拼接在一起。
据我了解,文档startScreencast是必经之路。

如果我理解正确的话,可以通过以下方式开始截屏
await Page.startScreencast({format: 'png', everyNthFrame: 1});
并在每个传入的帧中收听

Page.screencastFrame(image =>{
  const {data, metadata} = image;
  console.log(metadata);
});

但是它永远不会打印出任何东西。因此,我认为它没有被调用。

我将目标存档如下:
let counter = 0;
while(counter < 500){
  await Page.startScreencast({format: 'png', everyNthFrame: 1});
  const {data, metadata} = await Page.screencastFrame();
  console.log(metadata);
  counter += 1;
}

感觉像是性能不佳的骇客。
那么关于如何正确使用startScreencastscreencastFrame的任何建议?

最佳答案

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

    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});
    }

链接至github issue以获得详细说明。

10-05 20:52