配置选项
本文档记录了使用 ffmpeg.wasm 时可用的各种配置选项。这些选项允许您自定义 ffmpeg.wasm 加载其核心组件、执行命令以及处理超时和文件操作的方式。
加载配置
通过 FFmpeg.load() 初始化 ffmpeg.wasm 时,您可以指定一个 FFMessageLoadConfig 对象来控制核心 WebAssembly 模块和支持文件的加载方式。
核心模块 URL
以下选项允许您为核心 ffmpeg.wasm 组件指定自定义 URL:
| 选项 | 类型 | 描述 | 默认值 |
|---|---|---|---|
coreURL | string | ffmpeg-core.js 文件的 URL(UMD 或 ESM) | https://cdn.jsdelivr.net/npm/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js |
wasmURL | string | ffmpeg-core.wasm 文件的 URL | 源自 coreURL(将 .js 替换为 .wasm) |
workerURL | string | ffmpeg-core.worker.js 文件的 URL(多线程必需) | https://cdn.jsdelivr.net/npm/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js |
classWorkerURL | string | 内部 ffmpeg.worker.js 脚本的 URL | ./worker.js |
URL 解析逻辑
如果提供了 coreURL 但省略了 wasmURL 或 workerURL,则 worker 脚本会自动通过替换 coreURL 中的 .js 扩展名来推导它们。
执行选项
命令超时
exec() 和 ffprobe() 方法接受一个 timeout 参数(以毫秒为单位)。如果命令超过此持续时间,将被终止。
| 方法 | 参数 | 类型 | 默认值 |
|---|---|---|---|
exec | timeout | number | -1 (Infinity) |
ffprobe | timeout | number | -1 (Infinity) |
AbortSignal 配置
可以通过 FFMessageOptions 传递的 AbortSignal 取消操作。这允许主线程在外部 AbortController 触发时拒绝内部 promise。
type FFMessageOptions = {
signal?: AbortSignal;
};文件系统配置
文件系统后端 (FFFSType)
mount 方法要求从 FFFSType 枚举中指定文件系统类型。
| 枚举值 | 描述 |
|---|---|
MEMFS | 默认的内存文件系统。 |
WORKERFS | 针对浏览器 File 和 Blob 对象优化;避免将数据复制到 WASM 内存。 |
IDBFS | 将数据持久化到 IndexedDB。 |
NODEFS | 直接访问 Node.js 文件系统(注意:Node.js 支持目前有限)。 |
WORKERFS 挂载配置
当挂载 WORKERFS 时,options 参数必须符合 WorkerFSMountData(或在类型包中为 WorkerFSMountConfig)。
| 选项 | 类型 | 描述 |
|---|---|---|
files | File[] | 浏览器 File 对象的数组。 |
blobs | WorkerFSBlobEntry[] | 包含 name 和 data (Blob) 的对象数组。 |
ReadFile 编码选项
通过 readFile 检索文件时,您可以使用 ReadFileOptions 配置输出格式。
| 选项 | 类型 | 有效值 | 描述 |
|---|---|---|---|
encoding | string | "utf8", "binary" | 决定返回值是 string 还是 Uint8Array。 |
事件接口配置
日志事件
LogEvent 接口定义了由 "log" 事件监听器接收的数据结构。
| 属性 | 类型 | 描述 |
|---|---|---|
type | string | 日志来源:"stdout" 或 "stderr"。 |
message | string | 实际的日志文本字符串。 |
进度事件
ProgressEvent 接口用于跟踪转码操作的进度。
| 属性 | 类型 | 描述 |
|---|---|---|
progress | number | 完成比例,介于 0 和 1 之间。 |
time | number | 媒体中的当前时间戳(微秒)。 |
架构映射
下图将高层配置名称与处理它们的内部代码实体进行了关联。
实现流程:加载配置
此图展示了 FFMessageLoadConfig 如何从 UI 线程传播到 Worker 并用于初始化 WASM 核心。