@ohos-ports/ffmpeg-ffmpeg
v0.12.15-beta.1
Published
FFmpeg WebAssembly version, ported for OpenHarmony (Node.js API: worker_threads Worker shim + local @ohos-ports/ffmpeg-core wasm)
Readme
@ohos-ports/ffmpeg-ffmpeg
OpenHarmony / HarmonyOS port of @ffmpeg/ffmpeg (ffmpeg.wasm v0.12.15).
FFmpeg WebAssembly version — runs the real FFmpeg 5.1.4 WebAssembly engine
(@ohos-ports/ffmpeg-core) on Node.js / OpenHarmony (aarch64).
Port notes
Upstream @ffmpeg/ffmpeg targets the browser (Web Worker + CDN-fetched core).
This port makes it run on Node.js / OpenHarmony:
- Worker shim: when no browser
Workerglobal exists (Node.js), theFFmpeg.load()bootstrap transparently uses anode:worker_threadsbasedNodeWorkerShim(functionally equivalent module worker), with aworker-entryself/location bootstrap for the Emscripten core. - Local core resolution:
dist/esm/node/config.mjsresolves the locally installed@ohos-ports/ffmpeg-corewasm viaimport.meta.resolveand readswasmBinaryfrom disk — no CDN (unpkg.com) fetch at runtime. - Node entry enabled: the
exports["."].nodecondition points to the real ESM entry (./dist/esm/index.js) instead of the upstream browser-only stub.
In the browser the original behavior is fully preserved.
Usage (Node.js / OpenHarmony)
import { FFmpeg } from "@ohos-ports/ffmpeg-ffmpeg";
const ffmpeg = new FFmpeg();
await ffmpeg.load(); // uses @ohos-ports/ffmpeg-core wasm
await ffmpeg.writeFile("in.wav", input); // Uint8Array
await ffmpeg.exec(["-i", "in.wav", "-ar", "16000", "out.wav"]);
const data = await ffmpeg.readFile("out.wav");
await ffmpeg.terminate();Dependencies
@ohos-ports/ffmpeg-core— FFmpeg 5.1.4 WebAssembly core (OpenHarmony port)@ffmpeg/types— shared TypeScript types (unchanged upstream)
License
MIT — see LICENSE. Upstream: https://github.com/ffmpegwasm/ffmpeg.wasm
Port maintained by the ohos-ports project.
