乐于分享
好东西不私藏

太牛逼了! 我用AI开发了一个录屏软件

太牛逼了! 我用AI开发了一个录屏软件
轻量级 Windows 屏幕录制与截图工具,基于 Wails v3 构建,Go 后端 + Vue 3 前端,内嵌定制 FFmpeg,单文件零依赖。

Repository: https://gitee.com/741852963/lite-cap

功能特性

• 屏幕录制 — 全屏录制、区域录制、窗口录制三种模式• 屏幕截图 — 全屏截图、区域截图,支持矩形/箭头/马赛克/文字标注• GIF 录制 — 选区录制为 GIF 动图• 音频录制 — 支持系统声音和麦克风(需系统启用立体声混音设备)• 录制控制 — 暂停/恢复录制,录制区域边框实时跟踪窗口移动• 水印 — 支持图片水印和文字水印• 自包含 — 定制 FFmpeg 内嵌于 exe,不依赖系统 PATH

技术栈

技术
框架
Wails v3
后端
Go 1.25
前端
Vue 3 + TypeScript + Element Plus + Pinia
构建
Vite + UnoCSS
视频编码
定制 FFmpeg(gdigrab / dshow / libx264 / aac / png / gif)
屏幕捕获
GDI BitBlt(全屏/区域)、PrintWindow(窗口录制)

项目结构

liteCap/
├── app.go                    # Wails 绑定入口
├── app-recording.go          # 录制相关绑定
├── app-screenshot.go         # 截图相关绑定
├── app-gif.go                # GIF 录制绑定
├── app-border.go             # 录制边框覆盖层控制
├── app-watermark.go          # 水印功能
├── app-screenshot-editor.go  # 截图标注编辑器
├── app-window-picker.go      # 窗口选择器
├── app-config.go             # 配置管理
├── main.go                   # 应用入口
├── build.ps1                 # 一键打包脚本
├── build-ffmpeg.ps1          # 定制 FFmpeg 编译脚本
├── Makefile                  # 常用命令快捷方式
├── internal/
│   ├── recorder/             # FFmpeg 进程管理、录制控制
│   ├── capture/              # 屏幕捕获(GDI / PrintWindow)
│   ├── audio/                # 音频设备枚举(dshow)
│   ├── ui/                   # Win32 UI 组件(边框、区域选择器、窗口选择器)
│   ├── window/               # 窗口枚举、缩略图、EXCLUDEFROMCAPTURE
│   ├── config/               # 用户配置持久化
│   ├── embed/                # FFmpeg 内嵌/解压(go:embed ffmpeg.gz)
│   ├── logger/               # 日志(Debug 构建输出文件,Release 静默)
│   └── menu/                 # 系统托盘菜单
├── frontend/
│   └── src/                  # Vue 3 前端源码
├── third_party/
│   ├── ffmpeg/               # FFmpeg n7.0 源码
│   └── x264/                 # x264 源码
├── images/                   # 项目截图
└── docs/                     # 设计文档

构建指南

环境要求

依赖
版本
说明
Go
>= 1.25
后端编译
Node.js
>= 18
前端构建
Wails v3 CLI
latest
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
MSYS2 + MinGW64
-
编译定制 FFmpeg(仅需一次,构建产物已内嵌)

1. 克隆项目

git clone https://gitee.com/741852963/lite-cap.git
cd liteCap

2. 定制 FFmpeg 编译(可选)

项目已内嵌预编译的 internal/embed/ffmpeg.gz首次构建无需此步骤。仅在需要修改 FFmpeg 编译配置时执行:

# 需要 MSYS2 安装在 tools\msys64,并包含 MinGW64 工具链、git、nasm
.\build-ffmpeg.ps1

编译产出约 8MB 的 ffmpeg.exe,gzip 压缩后约 3.5MB,通过 go:embed 嵌入 Go 二进制。

3. 开发模式

# 安装前端依赖
cd frontend && npm install && cd ..

# 启动开发服务器(热重载)
wails3 dev

4. 生产构建

# 基础构建(输出到 build/release/dev/)
.\build.ps1

# 指定版本号(输出到 build/release/1.0.0/)
.\build.ps1 -Version1.0.0

# UPX 压缩(额外节省 30-40%)
.\build.ps1 -Version1.0.0-Compress

# 同时生成 NSIS 安装包
.\build.ps1 -Version1.0.0-Compress-Installer

# Debug 构建(日志输出到 exe 同目录 liteCap.log)
.\build.ps1 -Debug

# 清理后重新构建
.\build.ps1 -Version1.0.0-Clean

也可使用 Makefile 快捷命令:

make dev               # 开发模式
make build             # 生产构建
make build-compressed  # UPX 压缩构建
make build-installer   # 生成安装包
make build-debug       # Debug 构建
make release           # 完整发布(清理 + 压缩 + 安装包)

5. 运行测试

# Go 测试
go test ./internal/... -cover -count=1

# 前端测试
cd frontend && npx vitest run

# 全部测试
make test-all

构建参数说明

build.ps1 支持以下参数:

参数
说明
默认值
-Version
版本号,产物输出到 build/release/<版本号>/
dev
-Compress
UPX 压缩最终 exe
-Installer
生成 NSIS 安装包
-Clean
清理旧产物后重新构建
-Debug
Debug 构建(启用日志输出)

版本号通过 -ldflags "-X main.Version=xxx" 注入 Go 二进制,运行时日志中可查看。

定制 FFmpeg 模块

编译脚本 build-ffmpeg.ps1 只启用 liteCap 所需的最小功能集:

模块
用途
gdigrab
Windows 屏幕捕获
dshow
音频设备采集(麦克风/立体声混音)
libx264
H.264 视频编码
aac
音频编码
png
截图输出
gif
GIF 录制
crop / scale / aresample
滤镜
overlay / drawtext
水印
palettegen / paletteuse
GIF 两遍编码
drawbox
遮挡水印