node.js - Puppeteer 视频自动下载而不是显示播放器

标签 node.js chromium google-chrome-headless puppeteer

基本上我有下面这段代码

;(async () => {
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: false
  })

  const page = await browser.newPage()

  await page.goto('https://www.w3schools.com/html/mov_bbb.mp4', {waitUntil: 'load'})
})()

由于某种原因,当我执行脚本时,chromium 会自动开始下载视频而不是显示播放器。

有什么办法可以防止这种情况发生吗?

最佳答案

在撰写此答案时,不幸的是 Chromium 不支持播放 .mp4,了解更多信息:https://www.chromium.org/audio-video

如何绕过此操作? 您可以从这里下载最新的 chrome 开发版本, https://www.chromium.org/getting-involved/dev-channel

然后像这样使用chrome路径,

const browser = await puppeteer.launch({
    args: ["--no-sandbox"],
    headless: false,
    executablePath: "./chrome-unstable/chrome" // <-- chrome path here
});

您将看到它无需下载即可正确加载, enter image description here

有一个主要缺点,浏览器不知道页面何时加载,是否应该等到整个视频加载完毕?应该自动播放吗?

Puppeteer除了下载之外仍然没有任何好的方法来处理媒体文件。 .ppt、.doc、.pdf 和任何其他类型的文件也是如此。

您可以在此处查找其他媒体相关问题:https://github.com/GoogleChrome/puppeteer/issues?utf8=%E2%9C%93&q=is%3Aissue%20mp4

关于node.js - Puppeteer 视频自动下载而不是显示播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47081792/

相关文章:

python - 如何使用带有 Selenium 的 Headless Google Chrome 保存手机屏幕截图

css - @font-face 远程字体的模糊/粗体/扭曲字形

.net - 当托管的 Chromium Embedded 出现 JavaScript 错误时,是否可以获得通知?

docker - ubuntu docker 容器中的 headless Chrome

node.js - 等待时运行其他代码

node.js - 将 NodeJS Express API 部署到 AWS

node.js - 在sequelize 中创建行时如何引用关联而不假定外键列名称?

node.js - Express:如何将 font-awesome 作为静态内容提供?

node.js - 如何处理 Puppeteer "Error: Page crashed!"

python - Chrome headless 抛出 nosuchelements