GitHub 25k Star!这款开源录屏工具,免费无水印可商用,彻底告别付费

最近在学习视频的录制,但是录制的工具始终是一个头疼的问题。

试过几款免费软件,导出的视频不是糊成一团,就是画面挂着一个大水印。

想用 Screen Studio,功能确实好,但29美刀/月的订阅费对于一个还在学习阶段的人来说,实在下不去手。

直到在 GitHub 上刷到了这个项目 OpenScreen ,基于 Electron + React + TypeScript 实现,最新版支持中英文切换。

目前 25k Star,三天前还在更新。

它打的口号正中我的痛点:免费、高清、无水印、可商用,做 Screen Studio 的开源替代品。

Windows 直接上手

01、下载与安装

打开 OpenScreen 的 GitHub 仓库(搜 openscreen),打开后可以看到右边有官网地址可以进入,下载,双击运行,一路下一步,30 秒装完。

02、录制前的设置

启动软件,可以看到一个小悬浮框。你需要做三个选择:选择屏幕、是否打开系统音频、麦克风,然后点击开始录制就可以了。

03、进入编辑界面(核心功能区)

停止录制后,自动跳转到编辑界面。界面分三个区域:

中间上方 :实时预览窗口
底部 :时间轴,视频被切成一条
右侧:属性编辑面板

04、四大核心编辑功能

① 裁剪片段

想剪掉某一段?先在时间轴上定位,然后用分割工具切开再删。

② 自动/手动缩放(灵魂功能)

缩放功能让观众的视线始终跟着你的操作走。

用法很简单:

1 :在时间轴上点一下你想放大的位置。 2 :点旁边的 「+」 按钮,选择 Z3 :预览窗口出现白色框,拖动它框选要放大的区域 。 4:右侧面板调整缩放的倍数

你可以加多个缩放点,画面会平滑地从一个焦点移动到下一个焦点。看下我的效果,我是直接导出的gif。

③ 更换背景

录制时如果桌面比较乱,或者不想让观众看到桌面壁纸,可以一键换背景。

选中时间轴上的视频条,在右侧属性面板找到 「Background」

选项 效果
Wallpaper 内置抽象壁纸
Solid 纯色背景
Gradient 渐变色
Custom 上传自己的图片

选好之后背景立刻替换,主体内容保持清晰。

④ 添加标注

需要在视频里加文字说明、指向箭头或 Logo 时,用标注功能。

可添加三种元素:

Text :输入任意文字,调整字号颜色
Arrow :画一个箭头,指向你想强调的按钮或区域
Image:插入图片(比如公司 Logo)

每个标注都可以设置出现时长和位置。

⑤ 其他实用功能

还有其它变速、运动模糊,视频的导出功能16:9(横屏)、1:1,你可以自己亲身体验一下。

技术实现深度解析

01、技术栈一览

根据项目代码和依赖配置,OpenScreen 的技术选型如下:

层级 技术 占比/说明
桌面框架 Electron 跨平台桌面应用
前端框架 React + TypeScript 界面与逻辑
构建工具 Vite 快速开发构建
渲染引擎 PixiJS 高性能 2D 渲染
时间轴组件 dnd-timeline 拖拽式时间轴
样式 Tailwind CSS 原子化 CSS
代码规范 Biome 格式化 + Lint

02、屏幕录制是怎么实现的?

核心录屏功能依赖 Electron 的 desktopCapturer API:

scss 复制代码
用户点击录制
    ↓
调用 desktopCapturer.getSources()
    ↓
获取可录制的窗口和屏幕列表
    ↓
用户选择后,用 navigator.mediaDevices.getUserMedia() 获取视频流
    ↓
用 MediaRecorder API 把流录下来,存成 WebM 格式

音频部分

  • 系统音频:走 desktopCaptureraudio: 'loopback' 参数
  • 麦克风:走单独的音频流
  • 最后两条流合并

说明 :Windows 上系统音频之所以"开箱即用",是因为 Electron 在 Windows 上直接调用了底层的 Windows Audio Session API,不需要额外配置虚拟声卡。

03、缩放和平滑动画怎么做的?

这是 OpenScreen 最核心的编辑功能。

实现思路

第一步:录制时保存原始视频

第二步:用户在时间轴上添加"缩放关键帧",记录时间位置、缩放区域坐标、放大倍率、持续时间

第三步:渲染时用 PixiJS 实时计算每一帧的变换矩阵

第四步:两个缩放点之间用缓动函数插值,产生平滑过渡

为什么用 PixiJS?

PixiJS 基于 WebGL,处理实时视频纹理变换时性能更好,缩放动画才能保持 60fps 流畅。Canvas 2D 做不了这个复杂度。

运动模糊也是 PixiJS 的能力,在快速平移时对画面施加方向性模糊滤镜,视觉上更接近专业剪辑软件的效果。

04、时间轴的拖拽编辑

编辑界面底部的时间轴,支持拖拽调整片段位置、拉伸裁剪、添加关键帧,这些交互用的是 dnd-timeline 这个库。

它是一个专门为 React 设计的可拖拽时间轴组件,支持:

  • 时间轴缩放(Zoom In/Out 时间精度)
  • 拖拽移动片段
  • 拖拽边缘裁剪
  • 在时间轴上任意位置添加标记点

OpenScreen 把缩放点、标注点都抽象成了时间轴上的"标记",统一用 dnd-timeline 管理。

05、导出视频的流程

导出时的渲染不是实时播放,而是离屏渲染

css 复制代码
根据时间轴数据
    ↓
逐帧计算画面(应用缩放、背景、标注等)
    ↓
每一帧用 PixiJS 渲染到 Canvas
    ↓
用 Canvas.captureStream() 把 Canvas 内容编码成视频
    ↓
最终输出 MP4

注意:这个过程比较耗 CPU,所以导出进度条走的时间通常比视频时长要长,这是正常的。

优缺点总结

优点

优点 说明
完全免费 无水印、可商用,个人和商业用户都没有门槛
Windows 体验完美 系统音频、安装流程都无需折腾
核心功能扎实 自动缩放、背景替换、标注都流畅可用
技术栈现代 代码可读性好,适合二次开发

注意事项

注意事项 说明
Beta 版本 作者坦言可能有 bug,但日常轻度使用基本稳定
功能深度有限 没有高级光标效果、点击涟漪、3D 倾斜等

获取方式

GitHub 地址:

arduino 复制代码
https://github.com/siddharthvaddem/openscreen

作者在 README 里写了一句话让我印象很深:

"I'm new to open source, idk what I'm doing lol. If something is wrong please raise an issue."

一个自称"不知道自己在干嘛"的开源新人,居然做出了一款 25k Star、功能扎实、文档齐全的工具,简直太牛了。

如果觉得文章还不错,请给我点个喜欢吧!

相关推荐
豹哥学前端2 小时前
用猜数字游戏,一口气掌握 JavaScript 核心知识点(附完整代码)
前端·javascript
忆往wu前3 小时前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js
shao9185163 小时前
第3章(2)——使用Gradio JavaScript Client
javascript·node.js·cdn·gradio·job·events·playcode
光影少年3 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs
Mr.mjw4 小时前
vue中封装一个环形进度条组件,根据外部盒子大小自适应变化
前端·javascript·vue.js
无心使然4 小时前
Openlayers调用ArcGis影像服务之一动态地图、地图切片(/exportImage)
前端·javascript·数据可视化
像我这样帅的人丶你还4 小时前
前端监控体系与实践(二):全局监控
前端·javascript·vue.js
顾随4 小时前
(二)kettle--输入与输出
javascript·数据库·kettle
FlyWIHTSKY5 小时前
Vue 3 中 RouteRecord 详解(Vue Router 4)
前端·javascript·vue.js
老王以为5 小时前
前端视角下的 Java
java·javascript·程序员