无头铬拍摄屏幕视频或动画 [英] headless chrome capture screen video or animation

查看:251
本文介绍了无头铬拍摄屏幕视频或动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试从网站捕捉一些动画并使用ffmpeg将它们拼接在一起。
就我所了解的文档 startScreencast



如果我理解了这一点,我可以开始使用

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



每个传入帧包含

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

但它从不打印出某些东西。所以我认为它没有被调用。



我用这样的东西存档我的目标:

  let counter = 0; 
while(counter <500){
等待Page.startScreencast({format:'png',everyNthFrame:1});
const {data,metadata} =等待Page.screencastFrame();
console.log(元数据);
counter + = 1;
}

这就像一个非高性能的黑客。
因此,如何正确使用 startScreencast screencastFrame 的建议?



  

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

let counter = 0;
while(counter< 100){
const {data,metadata,sessionId} =等待Page.screencastFrame();
console.log(元数据);
等待Page.screencastFrameAck({sessionId:sessionId});
}

链接至 github issue 获取详细解释。


I try to capture some animations from a website and stitch them together using ffmpeg. As far as I understand the docs startScreencast is the way to go.

If I understand that right I can start the screencast with

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

and listen to every incoming frame with

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

But it's never prints out something. So I assume it's not called.

I archived my goal with something like this:

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

Which feels like a non-performant hack. So any suggestions on how to use startScreencast and screencastFrame properly?

解决方案

Every received frame also has to be acknowledged.

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

link to github issue for detailed explanation.

这篇关于无头铬拍摄屏幕视频或动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆