google-chrome - headless chrome 捕获屏幕视频或动画

标签 google-chrome video ffmpeg screen-capture headless

我尝试从网站上捕获一些动画并使用 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;
}

这感觉像是一个性能不佳的 hack。 那么关于如何正确使用 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详细解释。

关于google-chrome - headless chrome 捕获屏幕视频或动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050259/

相关文章:

linux - 适用于嵌入式设备的视频 session 堆栈

image - 使用ffmpeg从视频中提取帧 - 标题问题?

api - 如何使用 ffmpeg av_interleaved_write_frame() 写入 x264_encoder_encode() 生成的 NAL

javascript - 单元测试 -> Sinon + fluent-ffmpeg

java - 使用远程 'chromedriver.exe' 文件设置 Chrome WebDriver

google-chrome - 防止本地网站在 Chrome 上被强制使用 HTTPS?

css - 使用 CSS3 动画打破了页面中所有元素的固定背景定位

android - 在没有互联网的本地 Wi-fi 网络中是否可以进行网络通知?

video - "player.textTracks is undefined"与 video.js vtt-thumbnails

ffmpeg - 为 windows phone 8 构建 ffmpeg