跳到主要内容

KnoxStudio:专业影视制作者所需的一站式应用

· 阅读需 15 分钟
Knox Anderson
Knox Dev Team

深入探讨我们如何从零开始——完全使用 Rust——构建一个专业级的 macOS 原生视频编辑和 AI 媒体生成应用。

愿景

视频制作领域长期以来一直被那些将 AI 视为事后添加功能的重型专有编辑套件所主导——一个后来加装的插件,一个埋藏在菜单中的侧边栏功能。我们提出了一个不同的问题:如果 AI 不是编辑器的功能,而是联合导演呢?

KnoxStudio 就是答案。它是一款原生 macOS 应用程序,将专业的多轨视频编辑器与能够从自然语言生成视频、图像和音频的智能 AI 智能体融为一体——然后直接将它们放置到时间轴上。无需浏览器标签页、无需云端控制台、无需复制粘贴URL。您描述一个场景,它就会在您的项目中呈现出来。

KnoxStudio 完全使用 Rust 构建,拥有超过 416,000 行代码,它不是一个 Web API 的简单封装。它是一个从零开始构建的视频制作环境,每一个像素、每一帧、每一次交互都遵循一个理念:创意意图从您的话语流向屏幕,不受阻碍。

为什么选择 Rust?为什么选择原生?

视频编辑是桌面软件中最具挑战性的类别之一。帧精确的播放、实时画布合成、多轨时间轴操作以及 FFmpeg 管道编排都需要可预测的低延迟性能。Electron 从来不是一个选项。

我们选择 Rust 是因为它独特地结合了内存安全性、零成本抽象和无畏并发。同一种语言管理着我们的 GPU 加速 UI 渲染、异步 AI 智能体管道、SQLite 媒体数据库和 FFmpeg 导出编排——所有这一切都没有垃圾收集器,并且具有编译时保证,消除了整类运行时错误。

UI 框架是通过 eframe 使用的 egui——一个即时模式 GUI 库,让我们对每个控件拥有像素级的控制,同时以原生速度运行。结果是一个受 macOS 深色模式启发的界面,感觉像是属于这个平台的,即使在复杂的时间轴操作期间也能保持流畅的 60fps 渲染。

架构概述

KnoxStudio 的架构被组织成清晰分离的领域,每个领域负责视频制作工作流程的不同关注点:

核心模块

  • 项目系统 — 应用程序的核心。一个 Project 包含轨道、片段、标记、转场、注释和画布设置。每个项目元素都有一个 UUID,支持完整的序列化,并可以保存/加载为 .knoxstudio 捆绑包。项目系统支持多轨视频和音频、关键帧动画(位置、缩放、旋转、不透明度)、片段速度调整、定格画面、音频闪避、降噪和片段分组。

  • 时间轴引擎 — 一个多轨、非线性时间轴,具有拖放式片段放置、修剪、分割、波纹编辑和吸附功能。轨道头标识视频、音频和叠加轨道。时间轴支持入/出范围选择、带颜色编码的标记以及用于精细编辑控制的上下文菜单。

  • 画布与合成 — 一个实时预览画布,保持纵横比,使用每个片段的变换(位置、缩放、旋转、不透明度)合成多个视频图层,并在顶部渲染注释。画布支持注释工具,包括矩形、椭圆、线条、箭头、手绘、文本、标注、高亮和编号步骤——每个都有淡入/淡出时间和 z 顺序分层。

  • 录制引擎 — 具有完整系统集成的原生 macOS 屏幕录制。使用 CoreGraphics 进行屏幕捕获权限管理,使用 AVFoundation(通过 Swift/Objective-C FFI)进行屏幕、摄像头和麦克风捕获,以及系统音频回环。录制系统检测可用设备,处理权限请求并提供用户友好的指导,并直接录制到时间轴。

  • 导出管道 — 一个基于 FFmpeg 的复杂导出系统,支持多种分辨率预设(480p 到 4K)、基于百分比的缩放、自定义分辨率、多种编码质量等级和格式选择。管道在导出期间处理多段合成、注释渲染、光标效果叠加和音频混合。

  • AI 智能体系统 — 皇冠上的明珠。一个完整的 AI 驱动的制作助手,理解自然语言,生成媒体,管理创意资产,并编排复杂的多步骤工作流程。这值得单独介绍。

AI 智能体:您的创意联合导演

KnoxStudio 中的 AI 系统不是一个简单的提示生成视频按钮。它是一个多层、有状态的智能体架构,像虚拟制作团队一样运作。

智能体层级

顶层是 管理智能体 — 一个 LLM 驱动的编排器,充当制作管道的"CEO"。当您在聊天面板中输入消息时,管理智能体会解释您的创意意图,决定调用哪些工具,并协调多个子系统之间的执行。

管理智能体可以访问丰富的工具集:

  • 媒体生成 — 从文本提示生成视频、图像和音频,并自动注入上下文(场景描述、角色参考、生成默认值)。
  • 记忆与搜索 — 查询本地媒体数据库以查找先前生成的资产,检查已为某个场景制作了什么,或定位参考材料。
  • 规划与执行 — 对于复杂的请求("为第 3 场生成所有镜头"),管理智能体创建执行计划,跟踪进度,并优雅地处理失败。
  • 上下文感知 — 管理智能体拥有当前项目状态的实时快照:时间轴内容、可用资产、活动角色和剧本上下文。
  • 用户交互 — 当需要澄清时,管理智能体可以向用户提出带有结构化选项的问题,内联显示在聊天中。
  • 时间轴放置 — 生成的资产可以自动放置在时间轴的正确位置。

在管理智能体之下,子模型连接器 处理实际的媒体生成。系统支持多种生成模式:

  • 文本生成视频 — 描述一个场景并从纯文本生成视频。
  • 图像生成视频 — 提供一个参考图像将其动画化为视频序列。
  • 参考生成视频 — 使用参考视频来指导生成具有一致风格和动作的新视频。
  • 图像生成 — 从文本描述创建静态图像。
  • 音频生成 — 生成音乐、音效或配音。

智能视频路由器 根据您请求的上下文自动确定使用哪种生成模式——如果您附加了图像,它会路由到图像生成视频;如果前一个镜头的最后一帧可用,它会为场景连续性进行链接。

状态机

智能体通过正式的状态机(由 statig crate 提供支持)运行,跟踪对话生命周期:空闲、处理中、生成中、等待用户输入、处理错误。这确保 UI 始终确切知道智能体在做什么,并可以显示适当的反馈——思考指示器、生成进度卡、计划执行步骤。

记忆与持久化

所有生成的媒体都存储在 ~/.knoxmedia/ 的本地媒体库中,按类型组织(视频、音频、图像、剧本、角色)。一个 SQLite 数据库 索引每个资产及其元数据:创建它的提示、标签、创建时间、源路径和角色关联。这使记忆系统能够提供上下文感知的生成——智能体知道您已经创建了什么,并可以在此基础上构建。

剧本系统

KnoxStudio 最独特的功能之一是其内置的剧本引擎。您可以用 MarkdownFountain 格式(行业标准的纯文本剧本格式)编写或导入剧本,KnoxStudio 会将其解析为场景、动作块、对话、视觉描述和转场的结构化表示。

导演 模块随后分析剧本和生成历史,建议接下来要生成哪些镜头。它跟踪覆盖率——剧本中有多少视觉描述已被实现为生成的媒体——并可以通过一个命令批量生成某个场景的所有镜头。

视觉描述块(在 Markdown 中写成块引用,在 Fountain 中写成动作行)成为生成提示。角色对话标记链接到角色系统。场景标题成为导航锚点。整个剧本成为一个交互式的制作计划。

角色:跨生成的角色一致性

在多个 AI 生成的镜头中保持角色的视觉一致性是 AI 影视制作中最困难的问题之一。KnoxStudio 通过 角色 系统来解决这个问题。

一个角色代表一个人物或主体——"主角"、"配角"、"反派的巢穴"。每个角色携带参考图像和参考视频,这些上传到云资产库并与资产 ID 关联。当智能体生成涉及角色的镜头时,活动角色的资产 ID 会自动注入生成请求,确保输出与已建立的参考保持视觉一致性。

UI 中的角色面板让您可以创建、管理、切换和配置带有视觉参考画廊的角色。活动角色会自动包含在每个相关的生成请求中。


Streamdown Markdown 引擎

KnoxStudio 没有引入重型的第三方 Markdown 库,而是包含了 Streamdown — 一个从头开始用 Rust 编写的自定义流式 Markdown 解析器。Streamdown 专为聊天面板中 LLM 输出的实时渲染而设计,处理流式响应的逐 token 增量到达。

解析器处理标题、粗体、斜体、内联代码、带语法标签的代码块、块引用、有序和无序列表、水平线、链接和特殊内联实体。它速度快、内存分配高效,并生成基于 egui 的 Markdown 渲染器可以直接使用的解析事件——没有中间 AST,没有 HTML 转换。


原生 macOS 集成

KnoxStudio 是 macOS 的公民,不是游客。原生集成层包括:

  • Swift/Objective-C FFI — 屏幕捕获、摄像头捕获、音频捕获、视频播放和文件处理程序注册都用 Swift 实现,并通过 C 兼容的 FFI 桥接到 Rust。这确保应用直接使用 Apple 的原生 AVFoundation、ScreenCaptureKit 和 CoreGraphics API。

  • 系统权限 — 首次运行体验引导用户完成 macOS 权限授予(屏幕录制、麦克风、摄像头、系统音频),并清晰指导如何在系统设置中启用每一项。

  • 文件关联 — 在 Finder 中双击 .knoxstudio 文件会直接在应用中打开,这要归功于在 NSApplication 运行循环启动之前安装的已注册 Apple 事件处理程序。

  • 字体栈 — 应用加载 macOS 系统字体栈(Arial Unicode、Apple Symbols、Menlo、PingFang 用于中日韩文字)以实现正确的 Unicode、表情符号和符号渲染,并嵌入 Noto Sans Symbols 2 作为后备。

  • 窗口化 winit 补丁 — 项目供应了 winit(跨平台窗口管理 crate)的修补版本,专门用于保留 macOS 原生应用激活行为,以实现正确的 Info.plist 和 App Store 兼容性。


UI:macOS 深色模式,重新诠释

KnoxStudio 的界面从 macOS Ventura/Sonoma 深色模式美学中汲取了大量灵感。自定义主题系统定义了精细的调色板:

  • 背景 在面板、时间轴、画布和抬升表面之间具有微妙的饱和度变化
  • 排版 具有三个层次——主要、次要和第三级文本——以实现清晰的视觉层次
  • macOS 蓝色强调色 用于选择、活动控件和交互元素
  • 青色强调色 用于滑块把手和次要交互元素
  • 语义颜色 — 红色播放头、绿色成功指示器、黄色警告、红色错误
  • 传输控件 设计为带有悬停和活动状态的药丸按钮

布局遵循专业的 NLE(非线性编辑器)范式:

  • 顶部的 工具栏 包含项目工具、注释工具和录制控件
  • 左侧的 媒体浏览器 用于浏览导入和生成的媒体
  • 中央的 画布 用于带注释叠加的实时预览
  • 右侧的 检查器 用于片段属性、颜色控制和变换设置
  • 底部横跨的 时间轴 具有多轨编辑、轨道头和传输控件
  • AI 智能体面板 作为滑出式聊天面板用于对话式媒体生成

配置与灵活性

KnoxStudio 使用双文件配置系统将敏感凭证与用户偏好分开:

  • ~/.knoxmedia/config.yaml — 包含模型配置、API 密钥和活动模型选择。文件权限设置为 0600(仅所有者读/写)以确保安全。
  • ~/.knoxmedia/defaults.yaml — 包含生成默认值(时长、分辨率、纵横比、音频设置)、存储限制和执行参数。可以安全分享——没有密钥。

配置支持多个提供商和模型,具有灵活的活动选择系统,让用户可以在不同的文本、视频、图像和音频生成后端之间切换而无需改变工作流程。


导出:从时间轴到最终剪辑

导出管道基于 FFmpeg 构建,支持专业级的输出选项范围:

  • 分辨率预设:480p、720p、1080p、4K,或基于百分比的缩放(25%、50%、75%、100%)
  • 质量等级:多种编码质量级别,用于平衡文件大小和视觉保真度
  • 格式支持:常见视频容器格式
  • 合成:多段组装,具有正确的排序和时间
  • 叠加渲染:注释和光标点击效果被合成到最终导出中
  • 音频混合:多轨音频,每个片段具有音量、闪避和降噪功能

导出异步运行,并向 UI 实时报告进度。


注释与视觉传达

对于教程创作者、产品演示和教育内容,KnoxStudio 包含完整的注释工具包:

  • 形状:矩形、椭圆、线条、箭头
  • 绘图:用于有机注释的手绘工具
  • 文本与标注:具有可自定义样式的文本标签和标注框
  • 高亮:半透明高亮叠加
  • 编号步骤:用于顺序教程的自动编号步骤指示器
  • 时间:每个注释在时间轴上都有自己的开始时间和持续时间
  • 效果:淡入和淡出过渡、旋转、不透明度和 z 顺序分层
  • 锁定:注释可以锁定以防止意外修改

生成工作流程

以下是 KnoxStudio 中典型的 AI 辅助制作工作流程:

  1. 编写剧本,使用 Markdown 或 Fountain 格式,或将其粘贴到剧本面板中。
  2. 定义角色,为您的角色添加参考图像以确保视觉一致性。
  3. 与智能体聊天:"为第 1 场生成建立镜头。"管理智能体解释您的意图,读取第 1 场的视觉描述,检查是否有活动角色,并发送生成请求。
  4. 观看它呈现:聊天中出现一个生成卡,显示实时进度。完成后,视频下载到本地媒体库。
  5. 拖到时间轴 或让智能体自动放置。
  6. 迭代:"让它更戏剧化"或"继续下一个镜头"——智能体使用上一个生成的最后一帧链接镜头,实现无缝的场景连续性。
  7. 添加注释,调整时间,添加转场。
  8. 导出 最终视频。

智能体记住对话上下文、生成历史和项目状态。它可以规划多步骤序列,提出澄清问题,并从失败中恢复——所有这些都在同一个聊天界面中。


技术亮点

  • 416,000+ 行 Rust 代码 — 没有脚本语言,没有胶水代码。从 UI 到导出,纯 Rust。
  • Rust Edition 2024 — 使用最新的 Rust edition 功能和最低 Rust 版本 1.95。
  • 异步优先的 AI 管道 — Tokio 驱动的多线程运行时,用于并发 API 调用、轮询和下载,而不阻塞 UI。
  • 即时模式 UI — 整个界面使用 egui 的即时模式范式以 60fps 渲染,确保 UI 始终与应用状态同步。
  • 状态机驱动的智能体 — 正式的状态机(通过 statig)防止不可能的智能体状态,使对话生命周期可预测。
  • 自定义 Markdown 解析器 — 专门构建的流式解析器,用于实时渲染 LLM 输出。
  • SQLite 媒体索引 — 整个媒体库的快速本地搜索和元数据检索。
  • 智能路由 — 上下文感知的模型选择,根据可用附件和项目状态自动选择正确的生成模式。
  • 速率限制 — 内置 API 调用速率限制器,以尊重提供商限制并确保公平使用。
  • FFI 到 Swift/Objective-C — 通过精心设计的外部函数接口实现原生 macOS 系统集成。
  • 供应的 winit — 修补的窗口管理,实现完美的 macOS 应用生命周期行为。
  • 配置优化的发布构建 — LTO、符号剥离和优化级别 3 用于生产构建。

下一步

KnoxStudio 是 1.0.2 版本,但路线图雄心勃勃。基础——一个原生、高性能、AI 优先的视频编辑器——是坚实的。该架构从第一天起就设计为支持额外的提供商、新的生成模式和更深入的时间轴智能。

我们相信视频制作的未来是对话式的。不是点击菜单,而是描述您想要的并观看它出现。不是在五个不同的应用之间切换,而是拥有一个创意意图直接流向完成媒体的环境。

KnoxStudio 就是那个环境。而我们才刚刚开始。


KnoxStudio 由 Knox Core 构建。如需更多信息,请联系我们:support@knox.chat