在浏览器里给视频重新打光:Timeline Studio 的 AI 深度估计与 WebGL 实践

简介: Timeline Studio 开源项目实现浏览器端AI视频打光:基于Depth Anything V2深度估计,用WebGL实时计算虚拟灯光(可调位置/色温/强度),在保留原光影基础上增强主体、突出轮廓。免安装,在线即用,支持时间线编辑。

视频拍完后,人物脸部偏暗、主体不够突出,能不能在后期补一盏“虚拟灯”?

我在免费开源视频编辑器 Timeline Studio 中实现了 AI 辅助视频打光:先估计画面的相对深度,再根据深度构造近似表面,用 WebGL 计算补光。用户可以调整灯位、颜色和强度,继续在时间线上编辑。

项目源码:https://github.com/MartinDelophy/ai-video-editor

在线体验:https://anna.partners/store/@martindelophy/timeline-studio

阿里云AI视频打光封面.png阿里云_AI视频打光_封面.png

一、为什么补光需要空间信息

整体提高曝光会同时提亮人物和背景,很难形成明确的照射方向。深度估计提供了另一种线索:画面中哪些区域更近,局部表面如何变化。

当前实现使用 Depth Anything V2 Small,通过 Transformers.js 和 WebGPU 在浏览器端推理,采用 Q4F16 配置。结果属于相对深度,不能直接换算成实际距离。

这条深度分析和补光路径在浏览器本地处理画面。首次使用需要下载模型,运行速度取决于设备与浏览器。

二、AI 负责理解,着色器负责补光

整个过程分为两步:

  1. 对采样视频帧执行深度推理,得到深度序列。
  2. 将原图和深度作为纹理输入 WebGL,根据灯位与表面方向计算照明。

调整灯光参数时可以复用深度结果,无需每次重新运行模型。这让分析阶段和交互调光阶段各自承担合适的工作。

三、从深度变化估计表面朝向

着色器读取当前像素附近的深度,计算水平、垂直方向的变化,构造近似法线:

vec3 normal = normalize(vec3(-dx * .12, -dy * .12, 1.));

其中 dx、dy 来自邻域深度差分。随后计算表面指向灯光的方向,以点积估计漫反射贡献:

vec3 lightDirection = normalize(lightPosition - surface);
float diffuse = max(0., dot(normal, lightDirection));

这里构造的是单视角的近似深度表面,不是完整三维模型。法线也不是物体真实法线,但可以为方向性补光提供依据。

四、让灯光有方向、有范围

当前支持调整水平与垂直灯位、强度、范围、柔和度、距离和颜色。灯位从方位角、仰角与距离转换为三维坐标。

照明还受到空间包络与距离衰减的影响,避免整幅画面被同样提亮。柔和度参与邻域采样和漫反射响应的调整,提供更柔和的视觉过渡;它并非物理面积光源的精确模拟。

对于背光,单视角深度没有背面几何。实现通过前景深度边界与掠射方向估计轮廓光,不把正面的漫反射简单取绝对值,从而减少背面灯位把整张正脸照亮的问题。

五、保留原有光影,再叠加补光

当前方案没有从画面中完整分离材质与原始照明,而是在保留源画面光影的基础上增加光照贡献。

着色器使用 2.2 次幂近似转换到线性光空间,叠加补光与轮廓光,再转换回显示值。这是工程近似,并非完整的颜色管理或物理渲染系统。

因此,这项能力更适合局部提亮、主体强调、暖冷色补光和轮廓氛围调整。已经过曝丢失的纹理无法直接恢复,原画面中的硬阴影也不会自动消失。

六、视频处理还需要时间一致性

时间线片段可能经过裁剪、变速或速度曲线调整,深度采样必须匹配实际播放的源画面。项目使用共享的源时间映射:

const sourceTime = getVisualSourceTime(segment, localTime);

深度结果按源时间选择相邻样本,并在需要时混合。分析缓存包含裁剪、速度曲线、质量和模型版本等条件,避免相关输入变化后错误复用旧结果。

预览和输出路径复用深度效果绘制入口,有助于保持处理逻辑一致。但深度误差、采样密度和快速运动仍可能造成边缘变化,最终应结合连续播放检查。

七、能力边界

这是一种基于 AI 深度的后期补光近似。目前没有完整恢复场景几何、材质、真实投影或多次反射。头发、透明物体、复杂遮挡和快速运动都是需要重点检查的区域。

文章封面为原理示意图,不作为真实产品效果对比。评估实际效果时,应使用同一视频、同一时刻、同一构图进行前后比较。

八、体验与开源仓库

Timeline Studio 的目标,是把浏览器本地 AI 能力接入可继续编辑的视频工作流。除了运行模型,还需要处理时间映射、资源预算、取消、进度和输出。

欢迎体验并查看实现:

源码中的 src/lib/videoRelighting.js 包含主要补光着色器,src/lib/depthOfField.js 负责深度效果绘制,src/hooks/useDepthOfFieldAnalysis.js 负责分析流程。

如果项目对你有帮助,欢迎在 GitHub 点个 Star。也欢迎带着实际素材反馈问题,或提交改进代码。

相关文章
|
26天前
|
人工智能 编解码
淘宝主图视频怎么做?
本文用自拟木质托盘任务演示商品照片怎样变成可核对的展示内容,再按已核指南版本与当前发布页分别检查主图视频文件。
|
安全 网络安全 开发工具
GitHub 访问速度慢怎么办? 9 种方案帮你提速
GitHub 访问速度慢怎么办? 9 种方案帮你提速
6699 0
GitHub 访问速度慢怎么办? 9 种方案帮你提速
Squid 安装与配置
本文转载自:https://help.aliyun.com/knowledge_detail/41342.html Squid 介绍 Squid 是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。
2079 0
|
2月前
|
存储 人工智能 安全
DeepSeek Harness深度解析:核心功能、Cordis内核架构与本地部署实战教程
DeepSeek Harness 是由 DeepSeek AI 开发的开源 agent harness(智能体框架),采用“一切皆插件”的架构设计,由 Cordis 微内核驱动。该框架解决了传统 AI 应用开发中工具调用硬编码、平台适配成本高等痛点,通过插件化架构实现模型、工具、技能的自由组合,大幅降低 Agent 开发门槛。
387 0
|
2月前
|
人工智能 前端开发 开发者
整理了一个 GPT-6 Astra 游戏与交互作品合集,分享几个案例
Awesome GPT-6 Astra 是一个开源合集项目,收录4款由GPT-6 Astra辅助开发的交互作品:瓜体实验室、Mosswing、魔毯巫师与轨道花园,涵盖合成游戏、飞行挑战与粒子艺术。含体验入口、源码、Prompt及作者署名,旨在展示AI协作潜力,促进开发者交流。(239字)
|
3月前
|
人工智能 编解码 自然语言处理
把 DeepSeek Harness 接入视频剪辑工作流:开源 Timeline Studio 插件的工程实践
开源插件 dsh-timeline-studio-plugin 将 DeepSeek Harness 接入 Timeline Studio,通过 7 个安全工具实现自然语言驱动的视频工程编辑:支持工程检查、语义预演(diff)、事务式修改(apply)与 MP4 渲染验证,严格限制文件访问边界,保障专业剪辑流程可靠可控。
1023 1
|
3月前
|
缓存 人工智能 前端开发
浏览器本地跑中文 TTS:我们将 Kokoro 1.1 转为 FP16,替换了 Piper 中文配音
Timeline Studio v1.0.0 实现中文TTS浏览器端本地运行:将Kokoro multi-lang v1.1转为FP16,通过sherpa-onnx WASM+Web Worker在前端高效推理,支持中英混读、4种音色,全程离线、隐私安全,已开源。
|
3月前
|
机器学习/深度学习 人工智能 缓存
如何用 Agent Skill 构建一套可编辑、可验证的 AI 视频生产流水线
Timeline Studio 是开源AI视频编辑系统,支持从自然语言需求出发,自动完成素材分析、剪辑决策、时间线修改、浏览器端本地AI推理(Whisper/VITS等)及成片+可编辑`.timeline`工程双重交付,实现专业级自动化视频生产。
|
3月前
|
人工智能 编解码 缓存
Timeline Studio 重大升级:安装一个 Skill,让 AI 在一杯咖啡的时间里完成视频剪辑,并交付可编辑工程
Timeline Studio 是一款AI视频编辑工具,支持从图片/视频/网址自动生成专业视频,并交付可编辑的`.timeline`工程文件。它兼顾自动剪辑与人工精修,实现“一杯咖啡成片,随时局部修改”。开源免费,浏览器本地运行。
|
3月前
|
缓存 自然语言处理 语音技术
浏览器端多语言音色迁移工程实践:OpenVoice V2 FP16 ONNX、WebGPU 与 ModelScope 模型分发
Timeline Studio 是一款浏览器端多语言声音克隆与音色迁移工具,基于 OpenVoice V2 FP16 ONNX 模型,集成 ONNX Runtime Web、WebGPU/WASM 加速、双源模型分发(ModelScope/HF)、Cache Storage 缓存及 IndexedDB 声音档案。支持中文等11种语言,实现TTS语音生成+音色独立迁移,全程本地处理,无需服务器依赖。(239字)

热门文章

最新文章