【问题标题】:How to use Puppeteer to take Screenshots of Pages that Contain Video如何使用 Puppeteer 截取包含视频的页面
【发布时间】:2020-05-11 01:48:51
【问题描述】:

我目前正在使用 Puppeteer 打开网站并截取视频。但是,puppeteer 运行的默认 Chromium 浏览器不适用于视频类型。

我使用 Puppeteer 启动了本地版本的 Chrome,一切正常。

有没有办法用 puppeteer 打开一个实际的 chrome 浏览器实例,而不必指定 .exe 的本地链接,以使其在托管时更具可扩展性并减少对目录的依赖?

木偶师 2.0.0

注意:我正在使用 Puppeteer 运行非 Chromium 实例(没有 Chrome.exe 的目录)

【问题讨论】:

  • 也许您的本地版本的 Chrome 有视频编解码器,而无头版本没有。例如,当我在 Ubuntu 上安装 Chromium 时,我还安装了一个名为 chromium-codecs-ffmpeg-extra 的包。这只是一个猜测。
  • 我认为这只是 Chromium 的问题,很多人说他们不支持视频
  • 我觉得这里需要一个 docker 容器,其中包含可执行文件和带有模块的脚本

标签: javascript node.js google-chrome puppeteer chromium


【解决方案1】:

在控制包含音频和视频的页面时,您可能会发现 Puppeteer 的行为与预期不同。 (例如,video playback/screenshots is likely to fail。)这有两个原因:

  • Puppeteer 与 Chromium 捆绑在一起,而不是 Chrome,因此默认情况下, 它继承了所有Chromium's media-related limitations。这 表示 Puppeteer 不支持许可格式,例如 AAC 或 H.264。 (但是,可以强制 Puppeteer 使用 通过单独安装的版本 Chrome 而不是 Chromium executablePath option to puppeteer.launch。你应该只 如果您需要 Chrome 的正式版本,请使用此配置 支持这些媒体格式。)
  • 由于 Puppeteer(在所有配置中)控制桌面版 Chromium/Chrome,仅手机支持的功能 不支持 Chrome 版本。这意味着 Puppeteer does not support HTTP Live Streaming (HLS)

来源:FAQ: What features does puppeteer not support?

【讨论】:

  • 所以我目前正在尝试使用云功能执行我的 puppeteer 请求,其中没有本地路径供我存储可执行文件。你为此推荐一个 docker 容器吗?
  • @Rake146 :我不确定。如果您没有从无头 Chromium 获得这些屏幕截图,那么如果您最终需要设置完整的虚拟机而不是容器,我不会感到惊讶。例如,Chrome 是否会在没有 GUI/Desktop 的容器中运行(无需无头)(在某种程度上它可以截取实际上并未在任何地方显示的视频)?试试看,让我知道;我很想知道你最终做了什么。
  • @Rake146 :我找到了这个docker image,但我自己没有使用过。
  • 太好了,我实际上最终编写并使用了我自己的 docker 映像,这个解决方案最终奏效了!感谢您的见解!赞成你的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2019-08-21
  • 1970-01-01
相关资源
最近更新 更多