render method

Future<File> render({
  1. required RenderConfig config,
  2. required Directory outDir,
  3. required FramePump pump,
  4. required GlobalKey<State<StatefulWidget>> boundaryKey,
  5. required String compositionKey,
  6. required FfmpegRunner runner,
  7. Iterable<MediaSource> mediaSources = const [],
  8. Iterable<AudioSource> audioSources = const [],
  9. AudioMixStager? stageAudio,
  10. Export? export,
  11. int? posterFrame,
  12. ProgressCallback? onProgress,
})

captureToDirectory followed by an in-process encode through runner, returning the encoded outDir/out.mp4.

Implementation

Future<File> render({
  required RenderConfig config,
  required Directory outDir,
  required FramePump pump,
  required GlobalKey boundaryKey,
  required String compositionKey,
  required FfmpegRunner runner,
  Iterable<MediaSource> mediaSources = const [],
  Iterable<AudioSource> audioSources = const [],
  AudioMixStager? stageAudio,
  Export? export,
  int? posterFrame,
  ProgressCallback? onProgress,
}) async {
  final manifest = await captureToDirectory(
    config: config,
    outDir: outDir,
    pump: pump,
    boundaryKey: boundaryKey,
    compositionKey: compositionKey,
    mediaSources: mediaSources,
    audioSources: audioSources,
    stageAudio: stageAudio,
    export: export,
    posterFrame: posterFrame,
    onProgress: onProgress,
  );
  await runner.encode(args: manifest.ffmpegArgs, sandbox: outDir);
  final posterArgs = manifest.posterArgs;
  if (posterArgs != null) {
    await runner.encode(args: posterArgs, sandbox: outDir);
  }
  return File('${outDir.path}/${manifest.outputFileName}');
}