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