配置选项

本文档记录了使用 ffmpeg.wasm 时可用的各种配置选项。这些选项允许您自定义 ffmpeg.wasm 加载其核心组件、执行命令以及处理超时和文件操作的方式。

加载配置

通过 FFmpeg.load() 初始化 ffmpeg.wasm 时,您可以指定一个 FFMessageLoadConfig 对象来控制核心 WebAssembly 模块和支持文件的加载方式。

核心模块 URL

以下选项允许您为核心 ffmpeg.wasm 组件指定自定义 URL:

选项类型描述默认值
coreURLstringffmpeg-core.js 文件的 URL(UMD 或 ESM)https://cdn.jsdelivr.net/npm/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js
wasmURLstringffmpeg-core.wasm 文件的 URL源自 coreURL(将 .js 替换为 .wasm)
workerURLstringffmpeg-core.worker.js 文件的 URL(多线程必需)https://cdn.jsdelivr.net/npm/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js
classWorkerURLstring内部 ffmpeg.worker.js 脚本的 URL./worker.js

URL 解析逻辑

如果提供了 coreURL 但省略了 wasmURL 或 workerURL,则 worker 脚本会自动通过替换 coreURL 中的 .js 扩展名来推导它们。

配置选项

执行选项

命令超时

exec() 和 ffprobe() 方法接受一个 timeout 参数(以毫秒为单位)。如果命令超过此持续时间,将被终止。

方法参数类型默认值
exectimeoutnumber-1 (Infinity)
ffprobetimeoutnumber-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)。

选项类型描述
filesFile[]浏览器 File 对象的数组。
blobsWorkerFSBlobEntry[]包含 name 和 data (Blob) 的对象数组。

ReadFile 编码选项

通过 readFile 检索文件时,您可以使用 ReadFileOptions 配置输出格式。

选项类型有效值描述
encodingstring"utf8", "binary"决定返回值是 string 还是 Uint8Array。

事件接口配置

日志事件

LogEvent 接口定义了由 "log" 事件监听器接收的数据结构。

属性类型描述
typestring日志来源:"stdout" 或 "stderr"。
messagestring实际的日志文本字符串。

进度事件

ProgressEvent 接口用于跟踪转码操作的进度。

属性类型描述
progressnumber完成比例,介于 0 和 1 之间。
timenumber媒体中的当前时间戳(微秒)。

架构映射

下图将高层配置名称与处理它们的内部代码实体进行了关联。

配置选项

实现流程:加载配置

此图展示了 FFMessageLoadConfig 如何从 UI 线程传播到 Worker 并用于初始化 WASM 核心。

配置选项