# Export video with a transparent background · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/a43a6a47c143b57a1c6cea703479db700dacbe47)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: a43a6a47c143b57a1c6cea703479db700dacbe47

Requested commit: a43a6a47c143b57a1c6cea703479db700dacbe47

Commit: a43a6a47c143b57a1c6cea703479db700dacbe47

Tree: c5ebf722b8489152759771232425c600850ededd

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Export video with a transparent background

The video dialog gets a "Transparent background" checkbox, remembered
like the camera's. With it ticked, every frame leaves out the gradient
and dot grid, and the export is a QuickTime Animation .mov: lossless
ARGB, 30 fps, which keeps the transparency in video editors.

The format came from compositing the same clip over green in the
editors on this PC (ADR 0007). VP9 WebM drew half-transparent pixels
solid in DaVinci Resolve; ProRes 4444 broke in Clipchamp; QuickTime
Animation was right in both. Half-transparency matters here: utility
areas are translucent and transitions fade.

The encoder and muxer are plain Dart, so desktop and the browser write
the same file without ffmpeg or WebCodecs (which refuses alpha). The
MP4 muxer's box writer is shared: Mp4H264Muxer's output is unchanged.
A keyframe every two seconds keeps the file small (about 0.16 MB a
second), and the last frame is a keyframe because Clipchamp ends the
clip at its last one.

Frames are read back with straight alpha; premultiplied colour would
darken every half-transparent pixel.

The preference is a new AppPreferences field (22) whose default, off,
is the old behavior; the compatibility test reads a record without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

```

## Parents

- [f61bbfa19102a9fb5f34de3a368c9b30b1151beb](https://git.cafe/dara/icarus/commit/f61bbfa19102a9fb5f34de3a368c9b30b1151beb?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/a43a6a47c143b57a1c6cea703479db700dacbe47?format=markdown)
