# @ffmpeg\.wasm/main 中文文档

规范地址：https://npmcn.com/package/%40ffmpeg.wasm/main/

版本：0\.13\.1
npm 元数据更新时间：2023-08-05T14:56:07.009Z
中文译文更新时间：2026-11-14T15:32:07.921Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ffmpeg.wasm/main
原文对照：https://npmcn.com/package/%40ffmpeg.wasm/main/?lang=original
项目主页：https://github.com/FFmpeg-wasm/FFmpeg.wasm#readme
源码仓库：https://github.com/FFmpeg-wasm/FFmpeg.wasm

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

- 包体积（解压后）：66.3 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=14\.0\.0
- 运行依赖：0 个
- 首次发布：2023-04-02T14:55:17.060Z
- 最新版本发布：2023-08-05T14:56:06.896Z
- 近 30 天下载量：9550（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

WebAssembly 版本的 FFmpeg

## 安装

```sh
npm install @ffmpeg.wasm/main
```

也可以使用：`pnpm add @ffmpeg.wasm/main`、`yarn add @ffmpeg.wasm/main`、`bun add @ffmpeg.wasm/main`

## README

# FFmpeg.wasm (英语)

[![NPM](https://img.shields.io/npm/v/%40ffmpeg.wasm/main)](https://www.npmjs.com/package/@ffmpeg.wasm/main) [![NPM Downloads](https://img.shields.io/npm/dm/@ffmpeg.wasm/main.svg)](https://www.npmjs.com/package/@ffmpeg.wasm/main) [![JSdelivr Downloads](https://data.jsdelivr.com/v1/package/npm/@ffmpeg.wasm/main/badge)](https://www.jsdelivr.com/package/npm/@ffmpeg.wasm/main) [![LICENSE](https://img.shields.io/npm/l/%40ffmpeg.wasm%2Fmain)](https://npmcn.com/package/%40ffmpeg.wasm/main/LICENSE) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://npmcn.com/package/%40ffmpeg.wasm/main/CODE_OF_CONDUCT.md)

## 关于这个叉子

感谢 [杰罗姆·吴](https://github.com/jeromewu) 创建非常酷的 ffmpegwasm 软件包! ~然而,由于这个软件包在很长一段时间内没有更新过,很多功能被搁置,与节点18及以上功能不相容(因为emsdk版本已经太老了). 于是我决定维持一个分叉,解决问题,继续发展迭代.~ 最新情况:杰罗姆 Wu更新了ffmpegwasm,但放弃了节点支持,因为"如果你不在浏览器中,有很多更好的选择,比使用Web Assembly来达到更好的性能". 然而,我并不完全同意这一点。 WebAssembly让我们有可能以高性能运行程序,在本地和浏览器环境都有相同的代码. 它带来的方便和可移植性是任何其他解决办法所无法比拟的,目前的业绩问题可望在可预见的将来得到解决。 所以我决定继续维持这个项目. 随意创建问题或拉动请求 {(≧▽≦\*)o

### 释放计划

> 见 [待办事项](https://npmcn.com/package/%40ffmpeg.wasm/main/#readme-todos) 更多计划的章节

-   v0.12 与 ffmpegwasm v0. 11. x 完全兼容, 但将 emsdk 更新到最新版本并修正一些错误
-   从v0.13开始,我们将尝试添加一些新的特性,并使用现代的工具链来重构它 **这可能会给小版本带来一些突破性修改**。 。 。 .

### 从ffmpegwasm移徙

1.  更改套件名称并更新导入 :
    -   `@ffmpeg/ffmpeg` => `@ffmpeg.wasm/main`
    -   `@ffmpeg/core` 打开 `@ffmpeg/core-mt` => `@ffmpeg.wasm/core-mt`
    -   `@ffmpeg/core-st` => `@ffmpeg.wasm/core-st`
2.  更新版本为 `^0.12.0`

### 待办事项

-   [x] 将 emsdk 更新到最近
-   [x] 用 Github 动作发布
-   [x] 迁移到 pnpm
-   [x] 无害环境管理支助
-   [x] 测试 `vitest`
-   [x] 更新道具
-   [x] 用类型脚本重写
-   [x] 在多行模式下支持并行任务
-   [ ] 文件网站
-   [ ] 迁移到单列波
-   [ ] 以 [开始](https://xmake.io/)
-   [ ] 支持构建缓存
-   [ ] SIMD 和 WASI 版本
-   [ ] 升级到 FFmpeg@ 6
-   [ ] 动作快点 `libsvtav1` 改为 `libaom` (目前因太慢而残疾)

## 原始读取器

ffmpeg.wasm是一个纯Web组装的FFmpeg港口. 它可以在浏览器内进行视频和音频记录、转换和流出.

## 安装

**节点**

```
$ npm install @ffmpeg.wasm/main @ffmpeg.wasm/core-mt
```

**浏览器**

或者,在浏览器中使用脚本标记(只在部分浏览器中工作,见下文列表) :

> 只有浏览器 `SharedArrayBuffer` 支持可以使用多线程核心( s)`@ffmpeg.wasm/core-mt`,你可以检查 [这里](https://caniuse.com/sharedarraybuffer) 为完整的列表.

> [共享对话框](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) 仅供页 [跨原生个体](https://developer.chrome.com/blog/enabling-shared-array-buffer/#cross-origin-isolation)。需要发送信头 `Cross-Origin-Embedder-Policy: require-corp` 财务报告和审定财务报表 `Cross-Origin-Opener-Policy: same-origin` ,并确保您的静态资源服务器(或公共的 CDN) 包含标题 `Cross-Origin-Resource-Policy: cross-origin`(例如:. [联合公报](https://jsdelivr.com/)没有 [开口公斤](https://unpkg.com/)(中文(简体) )

```html
<script src="https://cdn.jsdelivr.net/npm/@ffmpeg.wasm/main/dist/index.global.js"></script>
<script>
  const ffmpeg = FFmpeg.create({
    /* ... */
  });
</script>
```

## 使用量

`ffmpeg.wasm` 提供使用 API 的简单程序, 将您只需要几行代码的视频转码 :

```ts
import { readFile, writeFile } from "fs/promises";
import { FFmpeg } from "@ffmpeg.wasm/main";

const ffmpeg = await FFmpeg.create({ core: "@ffmpeg.wasm/core-mt" });

ffmpeg.fs.writeFile("test.avi", await readFile("./test.avi"));
await ffmpeg.run("-i", "test.avi", "test.mp4");
await writeFile("./test.mp4", ffmpeg.fs.readFile("test.mp4"));
process.exit(0);
```

### 使用 ffmpeg.wasm 核心的其他版本

对于ffmpeg.wasm的每个版本,有一个默认的版本: `@ffmpeg.wasm/core-mt` (你可以发现它在 `devDependencies` 节 [软件包.json](https://npmcn.com/package/%40ffmpeg.wasm/main/package.json)),但有时可能需要使用更新版本的 `@ffmpeg.wasm/core-mt` 使用最新的/实验性特征. **警告:** 在达到v1.0.0之前,每个小版本的核心之间可能存在相容性,参见 [移徙指南](https://npmcn.com/package/%40ffmpeg.wasm/main/docs/migrate/README.md) 更多细节!

#### 节点

只需要安装所需的特定版本 :

```sh
$ npm install @ffmpeg.wasm/core-mt@$version
```

或使用自己的版本, 附带定制路径

```ts
const ffmpeg = await FFmpeg.create({
  core: "path/to/your/ffmpeg.wasm/core.js",
});
```

#### 浏览器

```ts
const ffmpeg = await FFmpeg.create({
  core: "https://cdn.jsdelivr.net/npm/@ffmpeg.wasm@$version/core-mt/dist/core.min.js",
});
```

### 使用单线程版本

```ts
const ffmpeg = await FFmpeg.create({
  core: "@ffmpeg.wasm/core-st",
});
```

## 多线程

多线程需要每个外部库配置, 现在只有后面的库支持它 :

### x264 (中文(简体) )

默认运行它多线程模式,不需要通过任何参数.

### libvpx / 网点

需要通过 `-row-mt 1`,但只能使用一线程帮助,可以加速30%左右

## 文档

-   [API 密码](https://npmcn.com/package/%40ffmpeg.wasm/main/docs/api.md)
-   [支持的外部图书馆](https://github.com/FFmpeg-wasm/ffmpeg.wasm-core#configuration)

## 财务问题

### Ffmpeg.wasm的执照是什么?

Ffmpeg内部有两个组件. 主题 :

-   @ffmpeg.wasm/ main (英语)[https://github.com/FFmpeg-wasm/ffmpeg.wasm 页面存档备份,存于互联网档案馆](https://github.com/FFmpeg-wasm/ffmpeg.wasm)(中文(简体) )
-   @ffmpeg.wasm/core-mt (英语)[https://github.com/FFmpeg-wasm/ffmpeg.wasm-core (英语)](https://github.com/FFmpeg-wasm/ffmpeg.wasm-core)(中文(简体) )

@ffmpeg.wasm/core-mt 包含WebAssembly代码, 由原始的 FFmpeg C 代码转接而来.

@ffmpeg.wasm/main 包含一种可以处理加载核心的复杂性并调用低级API的包装. 这是一个很小的代码基础 并且根据麻省理工学院的许可.

### 输入文件的最大大小是多少 ?

1GB,这是WebAssembly的一个硬限制. 将来可能会变成4GB.

## 常见问题

### @ffmpeg\.wasm/main 是什么？

WebAssembly 版本的 FFmpeg

### 如何安装 @ffmpeg\.wasm/main？

在项目目录运行 npm install @ffmpeg\.wasm/main，或使用 pnpm add / yarn add / bun add。

### @ffmpeg\.wasm/main 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ffmpeg\.wasm/main 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ffmpeg\.wasm/main 需要什么版本的 Node\.js？

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

### @ffmpeg\.wasm/main 可以商用吗？

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

### @ffmpeg\.wasm/main 的下载量有多少？

根据 npm 官方下载统计，@ffmpeg\.wasm/main 在 2026/10/15 – 2026/11/13 这 30 天内被下载 9,550 次，日均约 318 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ffmpeg\.wasm/main 还在维护吗？

最新版本 0\.13\.1 发布于 2023/08/05（3 年前）；至今共发布 3 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/04/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

