@ffmpeg.wasm/main

中文文档
0.13.1发布于 2023/08/05MITTypeScriptESM + CJS零依赖近 30 天下载 9550

WebAssembly 版本的 FFmpeg

中文使用文档
文档目录16 节
  1. 关于这个叉子
  2. 释放计划
  3. 从ffmpegwasm移徙
  4. 待办事项
  5. 原始读取器
  6. 安装
  7. 使用量
  8. 使用 ffmpeg.wasm 核心的其他版本
  9. 使用单线程版本
  10. 多线程
  11. x264 (中文(简体) )
  12. libvpx / 网点
  13. 文档
  14. 财务问题
  15. Ffmpeg.wasm的执照是什么?
  16. 输入文件的最大大小是多少 ?

FFmpeg.wasm (英语)

NPM NPM Downloads JSdelivr Downloads LICENSE Contributor Covenant

关于这个叉子

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

释放计划

见 待办事项 更多计划的章节

  • 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

待办事项

  • 将 emsdk 更新到最近
  • 用 Github 动作发布
  • 迁移到 pnpm
  • 无害环境管理支助
  • 测试 vitest
  • 更新道具
  • 用类型脚本重写
  • 在多行模式下支持并行任务
  • 文件网站
  • 迁移到单列波
  • 以 开始
  • 支持构建缓存
  • 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,你可以检查 这里 为完整的列表.

共享对话框 仅供页 跨原生个体。需要发送信头 Cross-Origin-Embedder-Policy: require-corp 财务报告和审定财务报表 Cross-Origin-Opener-Policy: same-origin ,并确保您的静态资源服务器(或公共的 CDN) 包含标题 Cross-Origin-Resource-Policy: cross-origin(例如:. 联合公报没有 开口公斤(中文(简体) )

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

使用量

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

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),但有时可能需要使用更新版本的 @ffmpeg.wasm/core-mt 使用最新的/实验性特征. 警告: 在达到v1.0.0之前,每个小版本的核心之间可能存在相容性,参见 移徙指南 更多细节!

节点

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

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

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

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

浏览器

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

使用单线程版本

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

多线程

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

x264 (中文(简体) )

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

libvpx / 网点

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

文档

财务问题

Ffmpeg.wasm的执照是什么?

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

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

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

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

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

版本与发布记录

@ffmpeg.wasm/main 共发布 3 个版本,首次发布于 2023/04/02;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.13.1latest2023/08/053 年前
0.13.02023/07/253 年前
0.12.02023/04/023 年前

关于 @ffmpeg.wasm/main 的常见问题

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