← 返回技术文章

pro1 · Web NLE

Web 端非线性编辑器

面向内容团队与工具类产品:围绕浏览器侧的时间线编辑、预览、修改与导出组织能力,并与桌面端重渲染、低延迟监看和智能辅助联动,减少「剪完再传、传完再看」的往返成本。

一、产品解决什么问题

传统流程里,剪辑师在本地非编软件里调色、对轨、叠特效,导演或客户往往要等导出成片才能提意见;若涉及远程协作,还要反复传大文件、版本号满天飞。另一条路径是「纯 Web 剪辑」,又容易在重负载合成、插件生态与色彩管理上碰到天花板。

本方案把能力拆成两层:重合成仍在算力与插件更可控的桌面侧完成;需要即时反馈、远程盯片、运营侧改字换条时,则通过流媒体级通道把实时或准实时画面送到浏览器,并在 Web 侧提供与业务匹配的预览、轻量编辑与成片导出能力。这样既不牺牲专业剪辑上限,又能把「看一眼、改一版」的闭环缩到秒级~分钟级。

二、核心能力

三、Demo 说明

下列五段演示视频按推荐顺序播放,对应从桌面专业剪辑浏览器预览 / 编辑 / 导出,再到智能辅助复杂包装的完整故事线。

  1. 桌面端 · 剪辑与预览:时间线操作与实时画面回显。
  2. 浏览器端 · 预览与导出:无需安装重型软件即可查看结果并导出成片。
  3. 浏览器端 · 编辑与预览联动:在 Web 上直接调整时间线并即时看到合成结果。
  4. 浏览器端 · 智能辅助:与智能化能力结合的交互演示(如脚本、分镜或参数建议)。
  5. 浏览器端 · 复杂效果:多层动效与装饰元素的合成表现。

四、Demo 演示

视频为 MP4 格式,可直接在常见浏览器中播放。

1 · 桌面端剪辑与预览
2 · 浏览器预览与导出
3 · 浏览器编辑与预览联动
4 · 使用 LLM 对话来编辑视频(本地模型与 LangChain 调用见第七节
5 · 复杂动效与包装

五、技术说明

技术栈

实现原理(概要)

整体可抽象为:时间线与素材语义 → 合成图(帧缓冲)→(可选)编码为视频流或文件 → 传输 → 对端解码与呈现。桌面端负责「算得动、对得准」的重度合成;浏览器端消费同一套协议或中间表示,做轻量交互、监看与导出,从而降低多端分裂带来的色差、帧错位与重复导出。

智能化能力通常以异步服务或本地插件形式接入:当前实验链路由 LangChain 经 HTTP 调用本机 Ollama 拉取生成结果,再解析为结构化建议(分镜、文案、参数包等)写回时间线或包装轨道,避免在实时预览线程内阻塞用户操作。

六、专题:WebRTC 下 Native 与 Web 的交互(只推只收 + 信令)

监看链路可以刻意做成单向媒体Native(桌面 / LiveServer 一类进程)只负责发送音视频轨浏览器端只接收并渲染,不向对端回推摄像头 / 麦克风画面。这样外端权限简单、带宽与隐私边界清晰,也避免在监看页误开上行导致回声或多余编码。

信令(Signaling)不在 WebRTC 标准里规定传输方式,但必须有一条可靠、有序的通道,用来交换 SDP(会话描述:编解码、SSRC、方向等)与 ICE candidate(网络路径候选)。在本工程形态里,信令并不是单独拆出去部署的微服务,而是做在 LiveServer 进程内部:用 Socket(实现上常见为 WebSocket)在固定端口监听,浏览器作为客户端连上来,完成 SDP/ICE 的文本往返;LiveServer 内再把消息交给同一进程里的 WebRTC 栈。音视频则仍走 WebRTC 媒体面(SRTP),与 Socket 控制面分离——本机预览时常落在回环上,跨 NAT 时再按需走 STUN/TURN,Socket 通道不承担 RTP 媒体载荷

6.1 角色与媒体方向

6.2 LiveServer 内 Socket 信令与建链顺序

典型顺序如下(信令端口随 LiveServer 拉起;同机实验时 ICE 常落在回环地址上):

  1. WebLiveServer 内置的 Socket 服务(如 WebSocket)建立长连接,完成会话 / 房间注册等应用层约定。
  2. LiveServer 内在 WebRTC 栈创建 offer(SDP),由 Socket 线程将 SDP 推给浏览器
  3. Web 将远端描述设为该 offer 后生成 answer经同一 Socket 连接回传;LiveServer 写入本端 RTCPeerConnection
  4. ICE candidate 仍以文本消息在 Socket 上双向交换(可 trickle),直到 ICE 连通。
  5. 媒体面为浏览器 RTCPeerConnection 与 LiveServer 内 PeerConnection 之间的 SRTP,与 Socket 控制面分离;跨复杂网络时再经 TURN 等,与是否内嵌信令无关。
flowchart LR
  subgraph LS["LiveServer(Native,单进程)"]
    ENC[时间线合成与编码] --> PCN["PeerConnection sendonly"]
    SOCK["内置 Socket 信令\n如 WebSocket 监听"]
    SOCK -.->|进程内交给 WebRTC| PCN
  end
  subgraph WEB["Web 接收端"]
    CLI["Socket 客户端"]
    PCW["PeerConnection recvonly"]
    VID[video 元素渲染]
    CLI <-->|SDP / ICE 文本| SOCK
    PCW --> VID
    PCW <-->|SRTP 媒体| PCN
  end
          
图:信令跑在 LiveServer 内的 Socket 上,不经单独「信令微服务」;媒体仍为 WebRTC SRTP。单向监看时 LiveServer 侧 sendonly、Web 侧 recvonly。

与本方案同源的开源形态、本机 WebSocket 端口与浏览器 API 细节,见技术文章 《基于 WebRTC 实现的端到端渲染预览》

七、专题:本地大模型调用(Qwen3:8b · Ollama · LangChain HTTP)

Demo 中「对话驱动编辑」一类能力,走的是完全本地化的实验栈:Qwen3:8b 作为主力模型(约 5GB 量级的「小」模型权重,相对云端大参数量级而言),通过 Ollama 部署在 Mac 笔记本上常驻服务;业务侧统一用 LangChain 去调大模型——在本地通过 LangChain 提供的 HTTP 风格接口(对接 Ollama 兼容的 REST 端点)发起请求、拿回文本,再交给上层解析成时间线或指令,而不是在应用里手写裸 HTTP 拼 prompt。

7.1 部署与调用路径

7.2 为何刻意放在本机

这样可以在不外传素材与提示词的前提下联调整条「自然语言 → 协议 / 编辑意图」链路,也方便与 Electron / 本地渲染进程放在同一台开发机上调试。代价是算力与内存都压在笔记本上,和云端大模型相比,首 token、整段生成的延迟会明显更大,交互上要有「等一等」的预期。

7.3 体验与效果边界(如实说明)

在 Mac 笔记本本地跑 8B 档模型,速度偏慢是常态:并发一高、上下文略长,或同时开着非编与预览,都会进一步拉长响应时间。效果上,与当前一线云端大模型或更大参数量相比,指令遵循、长上下文稳定性与「剪辑领域」细节仍会差一截——更适合做原型验证、离线演示与可控成本的迭代;若要做严肃生产,通常会换成更强算力、更大模型或经微调的专用小模型,并重新评估 LangChain 链路与延迟预算。

flowchart LR
  UI[对话 / 编排] --> LC["LangChain\nHTTP 调用封装"]
  LC -->|"Ollama REST"| OLL["Ollama 本机服务\nQwen3:8b 约 5GB"]
  OLL -->|生成文本| LC
  LC -->|解析后写回| UI
          
图:由 LangChain 走 HTTP 调 Ollama;Qwen3:8b 由 Ollama 加载在 Mac 本机。与 WebRTC / 渲染可同机并存,职责分离。