# @browserless/capture 中文文档

规范地址：https://npmcn.com/package/%40browserless/capture/

版本：14\.1\.6
npm 元数据更新时间：2026-11-07T09:49:43.729Z
中文译文更新时间：2026-11-08T16:31:27.421Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40browserless/capture
原文对照：https://npmcn.com/package/%40browserless/capture/?lang=original
项目主页：https://browserless.js.org/#/?id=capturepage-options
源码仓库：https://github.com/microlinkhq/browserless#master

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：61.1 kB，18 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>= 24
- 运行依赖：4 个
- 首次发布：2026-03-02T12:07:06.229Z
- 最新版本发布：2026-11-07T09:49:43.569Z
- 近 30 天下载量：5462（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：96（近 12 个月 96 个）

## 中文简介

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

## 安装

```sh
npm install @browserless/capture
```

也可以使用：`pnpm add @browserless/capture`、`yarn add @browserless/capture`、`bun add @browserless/capture`

## README

![browserless](https://github.com/microlinkhq/browserless/raw/master/static/logo-banner.png#gh-light-mode-only) ![browserless](https://github.com/microlinkhq/browserless/raw/master/static/logo-banner-light.png#gh-dark-mode-only)  
  
[![Powered by microlink.io](https://img.shields.io/badge/powered_by-microlink.io-blue?style=flat-square&color=%23EA407B)](https://microlink.io/) ![Last version](https://img.shields.io/github/tag/microlinkhq/browserless.svg?style=flat-square) [![Coverage Status](https://img.shields.io/coveralls/microlinkhq/browserless.svg?style=flat-square)](https://coveralls.io/github/microlinkhq/browserless) [![NPM Status](https://img.shields.io/npm/dm/@browserless/capture.svg?style=flat-square)](https://www.npmjs.org/package/@browserless/capture)  
  

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

## 安装

```sh
npm install @browserless/capture --save
```

## 使用量

```js
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()`数字 :

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

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

## 选项

捕获模式由 [进入点](https://npmcn.com/package/%40browserless/capture/#readme-modes)而不是一个选择.

| 选项 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `type` | `'webm' | 'mp4'` | `'mp4'` | 输出类型选择器映射到 Media Recorder mime 类型 . |
| `codec` | `string` | 取决于 `type` | Media Recorder 代码控制器 。 默认 : `webm -> vp9`, (中文(简体) ), `mp4 -> avc1.4D401F`。 。 。 . |
| `path` | `string` | `undefined` | 将捕获的媒体写入磁盘. |
| `duration` | `number` | `5000` | 捕捉时间以毫秒计. |
| `audio` | `boolean | object` | `false` | 获取音频。 当对象时,它被用作音频轨道限制. |
| `video` | `boolean | object` | `true` | 抓取视频. 当对象时,它被用作视频轨道限制. |

## 模式

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

```js
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`数字 :

```js
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`。 。 。 .

## 许可证

**@ 浏览/ 抓取** © [微链接](https://microlink.io/),在 [麻省理工学院](https://github.com/microlinkhq/browserless/blob/master/LICENSE.md) 执照.  
作者和维护者 [微链接](https://microlink.io/) 由来自 [捐助者](https://github.com/microlinkhq/browserless/contributors)。 。 。 .

这个 [标志](https://thenounproject.com/term/browser/288309/) 设计由 [辛赫工作室](https://xinh.studio/)。 。 。 .

> [微链接.io](https://microlink.io/) • GitHub 软件 [微链克](https://github.com/microlinkhq) • X [@microlinkhq (英语)](https://x.com/microlinkhq)

## 常见问题

### @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 和提交记录判断。

