Stoatworks Labs

Amber

That old Flash folder, playable in Resolume

Releasedv0.1.3Plugin & ModuleC++ / Rust / Python
Amber — That old Flash folder, playable in Resolume
The repo's generated showcase movie — a stepped diagonal of vector rectangles — rendered by the plugin class through its offline harness with the stage transparent, then composited over a grid: the grid shows through everywhere the shapes are not. Generated demonstration content, nobody else's Flash.

What it does

Flash has gone from the browser, but the work made in it hasn't gone anywhere, and Resolume can't open any of it. Amber gets that library working again in two ways, because there are two different problems hiding under one word. Old .flv files are a decoding problem: Sorenson Spark, VP6, VP6-with-alpha, H.264 and Screen Video, all of which ffmpeg can still read. Old .swf files are a runtime problem: vector shapes and ActionScript that have to be run, not decoded.

The converter does both offline, turning them into DXV or Hap (the codecs Resolume decodes on the GPU), reading the frame rate from the file rather than guessing it, and sending transparency to Hap Alpha instead of flattening it without telling you. The plugin does .swf live: drop it on a layer and the movie runs, timeline, ActionScript and all, with Flash's own wmode=transparent on by default so it sits over things as an overlay rather than a backdrop.

The converter doesn't bundle ffmpeg or Ruffle. They're your own copies, run as separate processes, which keeps the licensing tidy and means upgrading ffmpeg doesn't need a rebuild. The plugin carries its own Ruffle, compiled in, with the licence notices for everything inside it in the repo and in every download. The one thing to know before you rely on it: FFGL has no audio path at all, so live Flash is silent, whatever's in it.

  • Converts .flv (Spark, VP6, VP6-alpha, H.264, Screen Video) and .swf to DXV or Hap
  • Plays .swf live on a Resolume layer, with the timeline and ActionScript really running
  • Transparency preserved: Hap Alpha on conversion, wmode=transparent in the plugin
  • Frame rate read from the SWF header and the FLV's measured average, not guessed
  • Works around ffmpeg's DXV encoder silently shearing any width not a multiple of 16
  • amber doctor reports what the machine can actually do before anything is converted
  • Universal macOS build, plus a Windows build
  • The converter runs your own ffmpeg and Ruffle exporter rather than bundling them

Where it stands

Released at v0.1.3, which lists the plugin as SW Amber in the host's browser. v0.1.2 was a packaging fix, so the bundle and the DLL name their own release rather than the one before. The plugin is confirmed working in Resolume Arena on Apple Silicon. The converter has been tested on real content, not just synthetic: real 2003-era Flash, and real-world FLV in two codecs (Sorenson Spark at 720p and 4K, and VP6), with the output decoded again and compared against the source pixels every time. VP6-with-alpha is tested too, using a test file stitched together from existing VP6 bitstreams, since ffmpeg can decode VP6 but not encode it; the alpha comes through with a mean error of 0.05. Two ffmpeg habits turned up by measurement shape the whole pipeline, and they're worth knowing if you build anything else on DXV: the encoder silently shears any width that isn't a multiple of 16 (and 550x400 is Flash's default stage size), and it can't carry alpha at all, though it'll accept RGBA without a word of complaint. What I haven't verified: only the Apple Silicon slice has run in a host, so neither the Intel half of the universal bundle nor the Windows build has been loaded into Resolume. There's no out-of-process helper yet, so anything that hard-crashes Ruffle takes Resolume down with it. Live playback is .swf only, and the converter can't make transparent output from .swf, because it drives Ruffle's exporter and that has no background option. There's no audio anywhere, and there can't be.

Credits

The demonstration video shows short clips of “Badgers” — widely known as Badger Badger Badger — a Flash animation by Jonti Picking (Weebl). It is used briefly to show what amber does with real period Flash. It is not included with amber, is not redistributed, and no ownership is claimed. amber carries no audio at all, so the footage is silent.

Watch the original · Weebl’s channel

Watch it running

Amber video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead