
视频编辑器并不是一个特殊的案例,它仍然是一个 Phlo 应用。
8 Jun 2026
很容易假设一个围绕 routes、views 和数据库构建的语言适合 CRUD 应用,而对于更复杂的客户端媒体工作则显得力不从心。Phlo Presentation 部分存在就是为了验证这个假设:一个用于叙述性演示和短视频的音频时间线编辑器,完全建立在与本网站上其他所有内容相同的平台上。
它实际做了什么
在舞台上拖动和调整图像和剪辑的大小,擦洗共享时间线,并实时预览。一组共享的过渡效果(淡入、缩放、擦除、卡片)和“进行中”动画(肯·伯恩斯、平移、脉冲)驱动实时 CSS 预览和用于导出的画布曲线,因此您在编辑时看到的就是实际渲染的内容。Whisper 进行转录,模型进行翻译,生成每种语言的定时字幕文件。AI 配音将句子分组,并在时间线上放置生成的叙述,而不会在句子中间切断。AI 导演可以利用媒体库和一行提示,给资产加上视觉字幕,并从节奏预设中编译完整的时间线、配音和字幕,准备好之后手动进行细化。
新资源,无需新的模板层
客户端能力来自三个 DOM 资源:DOM/presentation(音频时钟播放器本身,一个无依赖的类,同时驱动用于导出的画布渲染器)、DOM/recorder(屏幕、相机或画布捕获直接到 Blob),以及 DOM/ffmpeg(一个用于浏览器编码的 ffmpeg-wasm 工具包,首先是 WebCodecs 路径,软件回退)。这些都不需要新的模板层或特殊的“媒体应用”模式;它们是像其他任何资源一样的资源,以与 CMS 字段类型相同的方式加载,从相同的 .phlo views 和相同的 apply() 协议中使用,作为 CRUD 屏幕。AI 方面(转录、翻译、配音、视觉字幕、导演)运行在本网站其他地方使用的相同 AI/OpenAI 资源上,以及安装在服务器上的 ffmpeg/ffprobe 用于转码、缩略图和音频组装,以及一个 OpenAI 密钥。没有什么特别的,都是本系列其他帖子已经涵盖的相同部分,旨在解决更复杂的问题。
无不匹配的导出
因为相同的过渡和动画代码驱动实时 DOM 预览和确定性的画布渲染器,所以导出(一个离线播放的独立 zip,或通过 WebCodecs 的客户端 MP4,带有 ffmpeg-wasm 回退)始终与预览内容匹配。这是 Phlo 在其他地方依赖的相同原则:一个真实来源,读取两次,而不是两个可能悄然分离的实现。
构建它的意义
一个 CMS 演示证明 Phlo 可以很好地处理 CRUD;一个屏幕录制器、一个视频编码器和一个 AI 导向的编辑器证明该平台并不只是局限于此。它是相同的语言,相同的资源系统,相同的 apply() 协议,应用于一种真正不同类型的应用。