@browserless/capture

中文文档
14.1.6发布于 2026/11/07MITCommonJS近 30 天下载 5462

使用 Chrome tapCapture API 通过浏览器录制一个 Puppeteer 页面到视频 .

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 选项
  4. 模式
  5. 出口
  6. 许可证
browserless browserless

Powered by microlink.io Last version Coverage Status NPM Status

@browserles/capture:使用tabCapture API记录一个Puppeteer页面.

安装

npm install @browserless/capture --save

使用量

const createBrowser = require('browserless')
const createCapture = require('@browserless/capture')

const withCaptureExtension = (launchOpts = {}) => {
  const ignoreDefaultArgs = launchOpts.ignoreDefaultArgs

  return {
    ...launchOpts,
    args: [
      ...(launchOpts.args || []),
      `--allowlisted-extension-id=${createCapture.extensionId}`,
      `--disable-extensions-except=${createCapture.extensionPath}`,
      `--load-extension=${createCapture.extensionPath}`
    ],
    ignoreDefaultArgs:
      ignoreDefaultArgs === true
        ? true
        : [
            ...new Set([
              ...(Array.isArray(ignoreDefaultArgs) ? ignoreDefaultArgs : []),
              '--disable-extensions'
            ])
          ]
  }
}

const browser = createBrowser(withCaptureExtension({ headless: 'new' }))

const browserless = await browser.createContext()
const puppeteerBrowser = await browserless.browser()
const page = await puppeteerBrowser.defaultBrowserContext().newPage()
const capture = createCapture({ goto: browserless.goto })

const video = await capture(page)('https://example.com', {
  duration: 5000,
  type: 'mp4',
  codec: 'avc1.4D401F',
  path: '/tmp/demo.mp4'
})

await page.close()
await browserless.destroyContext()
await browser.close()

browserless 核心不会自动注入抓取扩展旗. @browserless/capture 要求:

  • 正在使用捆绑的扩展装入 --allowlisted-extension-id, (中文(简体) ), --disable-extensions-except,以及 --load-extension。 。 。 .
  • 确保铬默认参数 --disable-extensions 被忽略.
  • 创建抓取的页面 defaultBrowserContext() (不是隐形语境).

API 形状有意简单,类似于 page.screenshot()编号 :page.pdf()数字 :

const capture = createCapture({ goto })
await capture(page)(url, opts)

回返a Buffer 写到 opts.path 提供时.

选项

捕获模式由 进入点而不是一个选择.

选项类型默认说明
type'webm' | 'mp4''mp4'输出类型选择器映射到 Media Recorder mime 类型 .
codecstring取决于 typeMedia Recorder 代码控制器 。 默认 : webm -> vp9, (中文(简体) ), mp4 -> avc1.4D401F。 。 。 .
pathstringundefined将捕获的媒体写入磁盘.
durationnumber5000捕捉时间以毫秒计.
audioboolean | objectfalse获取音频。 当对象时,它被用作音频轨道限制.
videoboolean | objecttrue抓取视频. 当对象时,它被用作视频轨道限制.

模式

每个捕捉模式都是一个单独的切入点,所以只拉入您使用的 (例如: extension 模式不装入基于 ffmpeg 的道具 :

const createCapture = require('@browserless/capture') // extension (default)
const createCapture = require('@browserless/capture/screencast')
const createCapture = require('@browserless/capture/screenshot')

三者都拥有相同的工厂签名—— createCapture({ goto })(page)(url, opts)。 。 。 .

入境点怎么样页:1
@browserless/capture (单位:千美元)/extension(中文(简体) )通过捆绑的扩展线浏览器媒体反馈指令( E)tabCapture) (中文(简体) ).默认. 设备像素(视网膜)输出. 捕获 audio。 。 。 .
@browserless/capture/screencast发展政策委员会 Page.startScreencast 框被粘入 ffmpeg .仅录相( E)video: false - 扔下来). CSS-像素输出. 要求数 ffmpeg。 。 。 .
@browserless/capture/screenshot保龄球 page.screenshot 框被粘入 ffmpeg .仅录相. 唯一能捕捉加速地层的模式(WebGL/canvas/video). 设备像素输出,以截图间隔为界. 要求数 ffmpeg。 。 。 .

出口

  • capture.extensionPath: 捆绑扩展的绝对路径.
  • capture.extensionId:软件包使用的扩展ID.
  • capture.MODES: 可用捕获模式的名称(入站点).
  • capture.types: 支持的数值 type。 。 。 .

capture 用途 goto(...).device.viewport 作为捕捉取取景器。 何时 video 实值 true 或省略,从该取景口推断出视频限制,从而设定匹配截图和PDF。 通过对象 video 或者说 audio 给自己设置这些限制.

推断的制约因素包括: deviceScaleFactor,因此输出像素符合截图密度.

type 映射到 Media Recorder MIME 类型的地图. codec 附录为 ;codecs=...默认为 vp9 页:1 webm 财务报告和审定财务报表 avc1.4D401F 页:1 mp4以 opts.codec数字 :

await capture(page)(url, { type: 'webm', codec: 'vp8' })
await capture(page)(url, { type: 'mp4', codec: 'avc1.640033' })

何时 type 实值 'mp4', Chromium 必须支持 MP4 Media Recorder 输出. 对于无头模式下的截图/贴子平分,启动Chrome并配对 --screen-info。 。 。 .

许可证

@ 浏览/ 抓取 © 微链接,在 麻省理工学院 执照.
作者和维护者 微链接 由来自 捐助者。 。 。 .

这个 标志 设计由 辛赫工作室。 。 。 .

微链接.io • GitHub 软件 微链克 • X @microlinkhq (英语)

版本与发布记录

@browserless/capture 共发布 96 个版本,首次发布于 2026/03/02;过去 12 个月发布了 96 个版本。

版本发布日期距今
14.1.6latest2026/11/071 天前
14.1.52026/11/062 天前
14.1.42026/11/062 天前
14.1.32026/11/044 天前
14.1.22026/11/035 天前
14.1.12026/11/026 天前

关于 @browserless/capture 的常见问题

@browserless/capture 是什么?

使用 Chrome tapCapture API 通过浏览器录制一个 Puppeteer 页面到视频 .

如何安装 @browserless/capture?

在项目目录运行 npm install @browserless/capture,或使用 pnpm add / yarn add / bun add。

@browserless/capture 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/browserless__capture 是否存在。

@browserless/capture 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@browserless/capture 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@browserless/capture 可以商用吗?

@browserless/capture 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@browserless/capture 的下载量有多少?

根据 npm 官方下载统计,@browserless/capture 在 2026/10/09 – 2026/11/07 这 30 天内被下载 5,462 次,日均约 182 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@browserless/capture 还在维护吗?

最新版本 14.1.6 发布于 2026/11/07(1 天前);至今共发布 96 个版本,其中过去 12 个月发布了 96 个;首次发布于 2026/03/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。