logo

运用您的 Flutter 知识生成视频、动画和幻灯片!

通过服务器端渲染自动化您的视频制作。

preview editor

素材仍处于早期阶段!请自行承担使用风险,API可能会发生更改。

快速入门

使用 pub 安装 footage

dart pub global activate footage

创建一个项目目录,例如 my_video,然后从该目录中运行 footage init 命令。

mkdir my_video
cd my_video
footage init

这将初始化一个 Flutter 项目,并预先配置 footage 默认模板。

要启动预览模式,只需像运行任何常规 Flutter 应用一样运行 lib/main.dart

flutter run lib/main.dart -d macOS

编写您的动画

组合

组合根对象描述了您视频的通用属性。

Composition(
    fps: 30,
    duration: const Time.frames(90),
    width: 1920,
    height: 1080,
    child: const MyScene(),
);

当前帧和配置

任何 Composition 的子对象都可以通过 context.video 扩展访问当前的帧和视频属性。

@override
Widget build(BuildContext context) {
    final frame = context.video.currentFrame;
    final fps = context.video.config.fps;
    final videoWidth = context.video.config.width;
    // ...
}

序列

序列是构成您视频剪辑的有限时间内的短片段。通过使用序列,您可以对子动画进行时间偏移。

Sequence(
    name: 'Circle', // For preview editor
    from: Time.frames(10),
    duration: Time.frames(20),
    child: Builder(
        builder: (context) {
            final frame = context.video.frame; // From 0 to 20 (since sequence starts at 10 and ends at 30)
            // ...
        },
    ),
);

循环

在给定持续时间内重复所有子动画。

Loop(
    name: 'Repeated circles', // For preview editor
    duration: Time.frames(20),
    child: Builder(
        builder: (context) {
            final frame = context.video.frame; // From 0 to 20, every 20 frames
            // ...
        },
    ),
);

渲染您的视频

以 PNG 帧的形式

在您的项目目录中,运行

footage render

您将在 build/video/frames 中找到输出的帧图像。

在底层,渲染过程使用 flutter_test 将每一帧渲染为单个图像,这得益于黄金测试。这使得无需运行应用程序即可进行渲染。

作为视频

要渲染视频,您首先需要安装 ffmpeg 命令行工具。

基础

-f 格式选项添加到 render 命令。

它们只是 ffmpeg 命令的快捷方式

  • webmffmpeg -i build/video/frames/%d.png -pix_fmt yuva420p -filter:v fps=<fps> build/video/out.webm
footage render -f webm

生成的视频是 build/video/out.webm

高级

使用您的帧文件的 ffmpeg 工具。

footage render
ffmpeg -i build/video/frames/%d.png -pix_fmt yuva420p -filter:v fps=30 build/video/out.webm

示例

基础

screenshot

你好波形

screenshot

幻灯片

screenshot

路线图

  • 渲染时的资产管理
  • 异步帧渲染
  • 更多默认 ffmpeg 视频渲染选项
  • Flutter 应用的可嵌入播放器
  • 预览速度(x0.25、x0.5、x2)
  • 用于演示文稿的幻灯片预览模式
  • 更多示例
  • 网站

感谢

非常感谢 Remotion 项目,它启发了我许多概念。

GitHub

查看 Github