当前位置: 首页 > news >正文

Canvas 动画录制成高清视频完整指南:CCapture.js 快速上手

Canvas 动画录制成高清视频完整指南:CCapture.js 快速上手

【免费下载链接】ccapture.jsA library to capture canvas-based animations at a fixed framerate项目地址: https://gitcode.com/gh_mirrors/cc/ccapture.js

如果你用 Canvas 写了一个粒子动画,想把它录成高清视频,直接开系统录屏往往只得到一顿一顿的画面——分辨率越高,掉帧越狠。CCapture.js 做的事情是:按固定帧率捕获 Canvas 动画。它把"录制"和"实时"解耦了,哪怕某一帧渲染要好几秒,最后拼出来的视频依然是稳稳的 30 或 60 fps。

为什么录屏满足不了你?

先说下你会在什么情况下需要它:

  • 想导出 4K 视频,但显卡撑不住这个分辨率的实时帧率;
  • 想从 10 万粒子直接怼到 1000 万;
  • 想把所有画质设置拉到最高再录。

实时录屏在这几种场景下都只能得到卡顿视频。CCapture.js 的思路是"暂停时钟":它接管了Date.nowsetTimeoutrequestAnimationFrameperformance.now这些取时间的方法,让它们表现得像"每帧经过的时间恒定",恒定量由你指定的帧率决定。所以渲染再慢,视频也照样丝滑,甚至能录 240fps 再去后期软件里做运动模糊。

有一个前提要注意:你的动画必须按"经过时间"推进,而不是每帧加固定值。也就是说位移、旋转要用 deltaTime 去算。如果你本来就用requestAnimationFrame加时间差写循环,那基本零成本满足。

最快安装方法

装好只需要一步。两种方式任选:

npm install ccapture.js

不想用 npm?直接在 HTML 里引<script>标签也行:主文件是src/CCapture.js,按你要导出的格式追加对应编码器即可——webm-writer-0.2.0.js管 WebM,gif.js管 GIF,tar.js管 PNG/JPEG 序列,download.js让下载更省心。也可以直接引全量打包版CCapture.all.min.js,一个标签搞定,或者用 bower 安装同名包。

最小示例:4 行核心代码跑通录制

流程是固定的四步:建对象 →start()→ 每帧capture(canvas)stop()+save()

var capturer = new CCapture({ format: 'webm', framerate: 30 }); capturer.start(); function render() { requestAnimationFrame(render); // 这里绘制你的动画 capturer.capture(canvas); } render();

动画播完后调用capturer.stop(),再capturer.save(),浏览器就会自动下载一个{文件名}.webmsave()也可以传回调,拿到 blob 自己处理。另外save()不要求先stop()——随时调用,都会把"到这一刻为止"的帧打包下载,方便随时预览。

参数速查:按需求选格式和画质

构造器参数决定一切,最常用的几个:

参数作用
formatwebm/gif/png/jpg/ffmpegserver,视频选 webm,短动画选 gif,要逐帧素材选 png/jpg(打成 TAR 包)
framerate目标帧率,默认 60
qualitywebm / jpg 的编码质量
name导出文件名,不传就随机 GUID
motionBlurFrames超采样帧数做运动模糊,0 或 1 无效
timeLimit录到指定秒数自动停并下载,长任务"设好就去睡觉"
autoSaveTime每 n 秒自动分段下载一次(仅 webm/png/jpg)
startTime从第几秒开始录
workersPathGIF 必须指定,指向gif.worker.js所在目录
verbose/display控制台打日志 / 页面加个信息小挂件

避坑指南:这些细节决定录制成败

⚠️start()之后时间 API 就不是"原来的味道"了setTimeoutrequestAnimationFrame会按固定时间步长走,所以务必确保动画循环在 start 之前已经跑起来,否则动画直接卡死。

  • WebM 基本是 Chrome 专属:底层 WebM Writer 依赖 webp 支持,其他浏览器目前指望不上,跨浏览器需求建议走 PNG 序列。
  • GIF 别贪多:gif.js 编码帧数多时性能有限,长动画优先 webm。
  • 长录制记得autoSaveTime:各浏览器对大内存块和大下载(比如超 1GB)各有脾气,分段能救命。4K 捕获建议每段 10~30 秒,文件名会是{name}-part-xxxxx,TAR 里的图片自带连续序号。
  • 内存不降反升:个别浏览器不回收攒下的帧。Chrome 可以用--js-flags="--expose-gc"启动,CCapture 会每帧手动gc(),内存曲线立刻平稳。

和 Three.js、Pixi.js、WebGL 怎么配合

它捕获的对象只是一个 canvas,所以上层引擎随便换:

  • Three.js:项目自带一个 Three.js 做的 3D 生命游戏 demo(examples/basic/),在 render 结尾把renderer.domElement传给capture()就能录 3D 动画;
  • Pixi.js:同样把渲染器的 canvas 丢给capture(),适合录 2D 游戏和动画;
  • 原生 WebGL:WebGL canvas 本质还是 canvas,捕获方式完全一致,复杂着色器动画通吃。

常见疑问

  • 为什么不直接录屏?录屏受限于实时帧率,录不了 4K + 高粒子;CCapture.js 是离线逐帧编码,帧率和画质互不拖累。
  • 能做慢动作/快动作吗?能,改framerate就行:低帧率录、正常播是快进;高帧率录(比如 120/240fps)放常规播放器就是慢动作。
  • PNG/JPG 导出来是视频吗?不是,是装逐帧图片的 TAR 包,适合丢给离线合成软件当素材。
  • GIF 报错?九成是忘了配workersPath

一句话总结:动画跑得动、但录不下来高清视频的场合,给它挂上 CCapture.js,逐帧慢慢画,视频照样流畅。

【免费下载链接】ccapture.jsA library to capture canvas-based animations at a fixed framerate项目地址: https://gitcode.com/gh_mirrors/cc/ccapture.js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4183625.html

相关文章:

  • 还在手动换 Linux 壁纸?3 步把壁纸交给 Variety 自动轮播
  • Lyra 2.0:基于扩散模型与SDS构建可探索生成式3D世界
  • 基于python的购物中心流量分析系统的设计与实现毕业设计项目源码
  • 使用Oh My Subagents框架构建本地多智能体AI团队:从原理到实践
  • 重庆口碑好的会议系统制造商中,哪家在专业度上表现出色呢?
  • 宝塔面板从入门到精通:可视化服务器运维与LNMP环境部署实战
  • 高质量网页转PDF方案:基于Puppeteer实现可复制、可跳转的文档生成
  • 时间紧迫自救!亲测这6款AI论文工具,从开题到答辩全程绿灯
  • AI驱动构建工具Grok Build与Netlify插件集成实战指南
  • 从美赛特奖论文学习数学建模:离散事件仿真与优化算法实战解析
  • CHORUS框架:基于工作量感知的多智能体人机协同翻译系统设计
  • 【温度】集总参数热模型模拟太阳能热吸收条件下车辆车内温度附Matlab代码
  • 告别拖时间轴:用文本勾选轻松剪视频
  • 如何看懂 chess 多人国际象棋的走棋音效系统:完整机制详解
  • Java面试实战:大厂技术考察点与高分回答解析
  • AI绘画精准构图:俯视图提示词解决多人站位与场景一致性问题
  • Android相机YUV转RGB性能优化:从C2D瓶颈到零拷贝实战
  • ContractScrub基准实践:构建与评估法律合同审查AI模型
  • Waydroid 折腾记录(安卓兼容环境)
  • 无奖励函数智能体进化:基于成对验证器的AI训练新范式
  • Swift-Image:紧凑统一图像生成模型实战与性能优化指南
  • RR 定制镜像:8GB 镜像搞定 DSM 引导与恢复
  • 6GB显存玩转4K AI视频:ComfyUI节点化工作流与显存优化实战
  • Music Flamingo 实操拆解:80 亿参数 AI 音乐分析模型,10 分钟整曲听一遍
  • AI图像修复与分割:本地化部署与批量皮肤纹理处理方案
  • SWF 文件打不开了?Ruffle 桌面版两种快速播放方式一次讲清
  • 大模型开发实战:从AI Agent、RAG到微调与部署的完整指南
  • LTX-2.5:8G显存本地部署多模态AIGC视觉工具全解析
  • OpenSCAD 3D建模库 BOSL2 上手教程:30 分钟从安装到第一个模型
  • 基于Spring Boot的膳食搭配营养学知识智能问答小程序的实现