FAQ
This content is for v0.4. Switch to the latest version for up-to-date documentation.
What licence is alpha2 under?
Section titled “What licence is alpha2 under?”The MIT License, copyright Alpha2 contributors. That covers the engine, the npm packages, the Python package and the Rust crates. Third-party components are listed in THIRD_PARTY_NOTICES.md.
Two parts come under other terms:
- FFmpeg. The native archives carry FFmpeg 8 built as shared libraries under the LGPL 2.1 or later, with its GPL and nonfree parts disabled. alpha2 links it dynamically, and you can replace the libraries with an ABI-compatible FFmpeg 8 build. Each archive’s
compliance/directory says where to get the source. - OpenH264. Cisco’s software H.264 encoder is never shipped by alpha2. If you install it (
install --openh264), you download Cisco’s binary from Cisco, under Cisco’s licence.
Is alpha2 a video editor?
Section titled “Is alpha2 a video editor?”No. alpha2 is an engine: it renders a timeline project to a canvas for preview and to a file for export. It has no timeline UI, media bin or menus of its own. You build those, or you use an app built on it: studio.alpha2.sh is the editor app.
What alpha2 gives an editor is the hard part underneath: the project document, validation, GPU rendering in the browser and natively, export, and @alpha2-sh/editor with documents, commands, undo and a preview and export bridge. See Editor.
Which codecs and containers can it export?
Section titled “Which codecs and containers can it export?”| Container | Video | Audio |
|---|---|---|
MP4 (.mp4, .m4v) |
H.264, HEVC, VP9, AV1, MPEG-4 Part 2 | AAC, Opus |
| MOV | H.264, HEVC, MPEG-4 Part 2 | AAC |
Matroska (.mkv) |
H.264, HEVC, VP9, AV1, MPEG-4 Part 2 | AAC, Opus |
| WebM | VP9, AV1 | Opus |
The default is H.264 and AAC, or VP9 and Opus for WebM. Natively, which codecs a machine encodes depends on its encoders: see Platform support. In the browser it depends on the browser’s WebCodecs encoders.
What can it read?
Section titled “What can it read?”Natively, alpha2-host decodes with FFmpeg 8, so it reads the video, audio and image files FFmpeg decodes. In the browser, the application decodes its media (WebCodecs, through alpha2/mediabunny or its own decoders) and uploads frames to the engine. Both also read SVG, animated images, Lottie, OpenEXR and image sequences through the engine’s extensions module, and SRT and WebVTT subtitles.
Does it work offline?
Section titled “Does it work offline?”Yes. Nothing in alpha2 calls a server while it renders.
- Browser: the engine is WebAssembly your page serves itself. Once the page and its
.wasmfiles are loaded (or cached), preview and export run on the device. - Native:
alpha2-hostandalpha2are programs on disk. Only the installers (npx @alpha2-sh/node install,python -m alpha2 install) download, once. SetALPHA2_HOST_DOWNLOAD_URLto install from your own mirror, or unpack a release archive yourself and setALPHA2_HOST_PATH.
Will the preview match the export?
Section titled “Will the preview match the export?”That is the point of the design. The browser preview, the native export, Node.js, Python and Rust all run the same rendering code, so they draw the same frames. Text matches when every renderer has the same font files in the same order. The CPU renderer’s pictures are the same bytes on every machine and for any number of threads. Determinism explains what is guaranteed and how it is tested.
How does it compare to Remotion or FFmpeg?
Section titled “How does it compare to Remotion or FFmpeg?”- Remotion renders React components in a browser, so a frame can hold anything a web page can, and your code runs per frame. alpha2 renders a JSON document with a GPU engine: no DOM, but a document you can store, validate and generate, and GPU rendering on a server without a browser. See Coming from Remotion.
- FFmpeg is a toolkit of filters over streams. alpha2 uses FFmpeg to decode and encode, and replaces the filtergraph with a timeline document that also previews in a browser. See Coming from FFmpeg.
How is alpha2 versioned?
Section titled “How is alpha2 versioned?”- Packages and programs share one version number: alpha2 0.4.6 is the
alpha2npm package,@alpha2-sh/node,@alpha2-sh/react,@alpha2-sh/editor, the Python package, the crates and the native archives, all at 0.4.6. The packages pin each other at that exact version, and@alpha2-sh/nodeinstalls the host archive of its own version. - The project document has a
schema_version,1for this release. The engine refuses any other withunsupported schema version. The schema isproject.v1.schema.json. - Effects and transitions are referenced by
idandversionin the document, so a project names the exact definition it was made with. - The host protocol has its own
protocolVersion,1.
alpha2 is before 1.0. These docs are versioned by minor release: the version menu shows the pages for earlier ones.
Can I add my own effects?
Section titled “Can I add my own effects?”Yes. Runtime effects are WGSL shaders you register with the engine, in the browser and natively. They need a GPU: the CPU renderer refuses them with EFFECT_ERROR. See Extensions.
Where do I report a bug?
Section titled “Where do I report a bug?”On GitHub issues. Include the project JSON (or the smallest one that shows the problem), the error code and message, and for a native export the alpha2-host version and what it prints on standard error.
