Skip to content
transom.design

Video Scribe

Browser-based video transcoding for Craft CMS 5. The editor’s laptop does the encoding; your server just runs PHP.

Server-side transcoding sounds simple until you try it: ffmpeg, enough CPU, a queue worker, and jobs that take 10–30 minutes. On a typical shared host, it barely works.

Video Scribe moves the work to the editor’s browser. Drop a file, the browser encodes it with ffmpeg.wasm, and the variants land in Craft as normal Assets. The server runs no ffmpeg and holds no queue.

Runs on any server

No ffmpeg, no queue workers, no background processes. If PHP runs, this runs.

Your computer does the work

Modern laptops encode video faster than most web servers. Editors get a progress bar instead of waiting for a queue.

Any input format

H.264, H.265, AV1, ProRes, DNxHD, VP9 and most common containers work without extra configuration.

Multiple output presets

Configure VP9, H.264, AV1, or audio-only presets. Each field produces one or more variants on upload.

  1. A developer adds a Video Scribe field to an entry type and picks which presets it produces.
  2. An editor uploads a video. Any common format works: H.264, H.265, AV1, ProRes, DNxHD, VP9.
  3. The browser transcodes into each configured preset (e.g. Hero 720p VP9, Web 1080p H.264).
  4. A poster thumbnail is captured from the first frame and uploaded as a JPEG Asset alongside each variant.
  5. Each variant uploads to Craft as a normal Asset.
  6. The field stores {presetHandle → assetId, thumbnailAssetId}. By the time the editor hits Save, all uploads are done.
  • Craft CMS 5.0+
  • PHP 8.3+
  • A browser with WebAssembly and SharedArrayBuffer support

Video Scribe is open source under the GNU General Public License v2.0 or later.

ffmpeg-core.wasm is compiled from FFmpeg with libx264 and carries the same GPL 2+ license. The build toolchain, Dockerfile, and build scripts are all in the repository, satisfying GPL source disclosure.