DesktopVideoRenderer class final

Renders a Fluvie composition to an MP4 file with a local FFmpeg.

This is the desktop arm of the VideoRenderer family: it runs Fluvie's deterministic capture loop through the host's pump seams, then hands the captured manifest's argument array to an FfmpegRunner. It is the same path the CLI drives — this class is the symmetric in-process entry point next to OnDeviceVideoRenderer (mobile) and WebVideoRenderer (browser).

Audio defaults to on: the local FFmpeg carries the full feature set, so a Video's declared Audio tracks are mixed in unless you pass audio: false (which warns once, unless silenced). Every dependency is injected so the orchestration is unit-testable; the host owns pumping through pumpWidget and pumpFrame (a widget test passes the tester's, the CLI passes its binding's).

Implemented types

Constructors

DesktopVideoRenderer({required ShellMount pumpWidget, required ShellFramePump pumpFrame, FfmpegRunner? runner, RenderService? service, Future<Directory> sandboxFactory()?, void onWarning(String message)?, MediaResolver? mediaResolver, NetworkAllowlist? networkAllowlist})
Creates a renderer over its seams; the defaults target a real desktop.

Properties

hashCode → int
The hash code for this object.
no setterinherited
mediaResolver → MediaResolver?
The injected media resolver, or null to build (and dispose) one per render from mediaResolverProvider. Pass one to inject a fake.
final
networkAllowlist → NetworkAllowlist?
Restricts which hosts network media may be fetched from. Applied to the per-render resolver when none is injected; ignored when mediaResolver is provided (configure the allowlist on it instead).
final
pumpFrame → ShellFramePump
Pumps the host one frame after each seek.
final
pumpWidget → ShellMount
Mounts the capture shell into the host's element tree.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
render({required Widget composition, required Aspect aspect, required Duration duration, int fps = VideoDefaults.fps, int longEdge = VideoDefaults.longEdge, bool audio = true, bool warnOnDroppedAudio = true, String compositionKey = 'render', RenderProgressCallback? onProgress}) → Future<File>
Renders composition for aspect over duration to an MP4 file in a fresh sandbox directory, returning that file.
override
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited