Recordly 深度教學:開源螢幕錄影與影片編輯利器

目錄

  1. 專案概覽
  2. 核心價值與使用場景
  3. 系統架構
  4. 安裝與建置指南
  5. 功能深度解析
  6. 資安審查報告
  7. Extension 系統與 Marketplace
  8. 原生層技術剖析
  9. 效能最佳化與 GPU 加速
  10. 常見問題與限制
  11. 總結與評估

1. 專案概覽

Recordly 是一款開源跨平台桌面螢幕錄影與影片編輯應用程式,目標是讓使用者在錄製螢幕後,不需要專業影片編輯軟體(如 After Effects、Premiere),就能直接在 app 內產出具有「自動縮放 (auto-zoom)」、「游標美化 (cursor polish)」、「網路攝影機疊加 (webcam overlay)」等專業效果的展示影片。

指標數值
GitHub Stars16,580
Forks1,169
開放 Issues107
最新版本v1.3.3 (2026-05-28)
主要語言TypeScript (~102K 行)
授權AGPL-3.0
支援平台macOS 14.0+ / Windows 10 20H1+ / Linux

起源:Recordly 最初從 OpenScreen fork 而來,目前已有超過 80% 的程式碼分歧,由 @webadderall 獨立維護。

定位對標:Screen Studio(付費,macOS 限定)的開源免費替代品,且支援三大平台。


2. 核心價值與使用場景

2.1 核心價值主張

  1. 零門檻影片美化:錄製完成後,自動偵測游標活動區域並建議縮放,無需手動設定關鍵影格
  2. 一站式工作流:從錄製 → 編輯 → 匯出全部在同一個 app 內完成
  3. 三平台支援:macOS/Windows/Linux 一致體驗
  4. 完全開源免費:AGPL-3.0 授權,可自行建置與修改
  5. 社群 Extension 生態:透過 Marketplace 擴充功能

2.2 適用場景

場景說明
產品展示影片軟體公司錄製功能介紹影片,自帶縮放與游標美化
技術教學錄影開發者錄製 coding tutorial / walkthrough
Bug 回報快速錄製問題畫面附上 GIF/MP4
行銷素材將桌面操作變成具品牌風格的影片
內部訓練製作 SOP 操作示範影片

2.3 競品比較

功能RecordlyScreen StudioOBS StudioLoom
開源AGPL-3.0GPL-2.0
自動縮放
游標美化
框架風格化有限
跨平台macOS/Win/LinuxmacOS only全平台瀏覽器
價格免費$89+免費訂閱制
Extension插件

3. 系統架構

3.1 高階架構圖


graph TB
    subgraph "Recordly Application"
        subgraph "Renderer Process (React)"
            UI["UI Layer
React + Radix UI + Tailwind"] VE["Video Editor
Timeline + Settings"] VP["Video Playback
PixiJS Renderer"] EXT_UI["Extension Manager UI"] end subgraph "Main Process (Electron)" MAIN["Main Process
Window Management"] IPC["IPC Handlers
Recording / Export / Captions"] EXT["Extension Loader
Manifest Validation"] UPD["Auto Updater
electron-updater"] MS["Media Server
Local HTTP"] end subgraph "Native Helpers" MAC_SCK["macOS
ScreenCaptureKit Helper"] MAC_CURSOR["macOS
Cursor Monitor (Swift)"] WIN_WGC["Windows
WGC Capture (C++)"] WIN_WASAPI["Windows
WASAPI Audio (C++)"] CUDA["NVIDIA
CUDA Compositor"] WHISPER["Whisper
Speech-to-Text"] end subgraph "Export Pipeline" FFMPEG["FFmpeg
Static Binary"] PIXI["PixiJS
Scene Composition"] MP4["MP4 Output"] GIF["GIF Output"] end end UI --> VE VE --> VP VP --> PIXI UI <-->|contextBridge| IPC IPC --> MAC_SCK IPC --> WIN_WGC IPC --> WIN_WASAPI IPC --> CUDA IPC --> WHISPER IPC --> FFMPEG PIXI --> MP4 PIXI --> GIF MAIN --> UPD MAIN --> MS MAIN --> EXT EXT_UI <--> EXT

3.2 目錄結構

 1Recordly/
 2├── electron/                  # Electron 主程序
 3   ├── main.ts                # 應用入口 + 視窗管理
 4   ├── preload.ts             # contextBridge API 暴露
 5   ├── windows.ts             # BrowserWindow 建立邏輯
 6   ├── updater.ts             # 自動更新系統
 7   ├── mediaServer.ts         # 本地媒體伺服器
 8   ├── ipc/                   # IPC 處理器
 9      ├── recording/         # 錄製邏輯(mac/win/linux)
10      ├── export/            # 匯出邏輯(含 native video)
11      ├── captions/          # Whisper 語音轉文字
12      ├── cursor/            # 游標追蹤/遙測
13      ├── ffmpeg/            # FFmpeg 濾鏡/二進位
14      ├── project/           # 專案檔管理
15      └── register/          # IPC handler 註冊
16   ├── extensions/            # Extension 載入/驗證/Marketplace
17   └── native/                # 平台原生 helper
18       ├── ScreenCaptureKitRecorder.swift
19       ├── NativeCursorMonitor.swift
20       ├── wgc-capture/       # Windows Graphics Capture (C++)
21       ├── windows-capture/   # Windows DXGI 擷取 (C++)
22       ├── nvidia-cuda-compositor/  # CUDA GPU 合成器
23       └── cursor-monitor/    # 跨平台游標監控 (C++)
24├── src/                       # React 前端
25   ├── components/
26      ├── video-editor/      # 編輯器核心(40+ 檔案)
27      ├── launch/            # 啟動/錄製介面
28      ├── ui/                # shadcn/ui 元件
29      └── countdown/         # 倒數計時 overlay
30   ├── hooks/                 # 自訂 hooks
31   ├── contexts/              # Theme/Shortcuts/I18n context
32   ├── lib/                   # 共用工具函式
33   ├── i18n/                  # 國際化設定
34   └── utils/                 # 平台/比例工具
35├── scripts/                   # 建置腳本(native helpers, release)
36├── public/                    # 靜態資源(wallpapers, WASM)
37└── branding/                  # Logo 與圖示素材

3.3 技術棧一覽

層級選用技術用途
App FrameworkElectron跨平台桌面殼
Build ToolVite前端打包
FrontendReact 18 + TypeScriptUI 渲染
UI ComponentsRadix UI + shadcn/ui無障礙元件庫
StylingTailwind CSSUtility-first CSS
RenderingPixiJS + @pixi/filter-*場景合成 + 特效濾鏡
Video I/OFFmpeg (static)影音編碼/轉碼
SpeechWhisper (local binary)語音轉字幕
macOS NativeSwift (ScreenCaptureKit)原生螢幕/音訊擷取
Windows NativeC++ (WGC/DXGI/WASAPI/MF)原生擷取/編碼
GPU ExportCUDA (C)NVIDIA 硬體加速合成
TestingVitest單元/整合測試
LintingBiome取代 ESLint + Prettier
Packagingelectron-builder多平台打包
Auto Updateelectron-updater應用程式自動更新

3.4 資料流


sequenceDiagram
    participant U as 使用者
    participant R as Renderer (React)
    participant M as Main Process
    participant N as Native Helper
    participant F as FFmpeg

    U->>R: 選擇螢幕源 + 開始錄製
    R->>M: IPC: start-recording
    M->>N: 啟動原生擷取 (SCK/WGC/Electron)
    N-->>M: 影音資料流
    M-->>R: 錄製狀態更新

    U->>R: 停止錄製
    R->>M: IPC: stop-recording
    M->>N: 停止擷取
    M-->>R: 開啟編輯器 + 載入影片

    U->>R: 編輯(縮放/修剪/標註/游標/webcam)
    R->>R: PixiJS 即時預覽

    U->>R: 匯出 MP4/GIF
    R->>M: IPC: start-export
    M->>F: FFmpeg 編碼管線
    M->>N: (可選) CUDA 合成
    F-->>M: 匯出完成
    M-->>R: 匯出結果


4. 安裝與建置指南

4.1 快速安裝(預建版本)

直接從 GitHub Releases 下載對應平台的安裝檔。

目前最新穩定版:v1.3.3

平台格式
macOS.dmg
Windows.exe installer
Linux.AppImage / .deb

4.2 Arch Linux / Manjaro

1yay -S recordly-bin

4.3 從原始碼建置

前置需求

macOS

1xcode-select --install

Linux (Ubuntu/Debian)

1sudo apt install build-essential cmake libx11-dev libxtst-dev libxrandr-dev libxt-dev

Windows:Visual Studio 2022 + C++ workload + CMake

建置步驟

 1# 1. 取得原始碼
 2git clone https://github.com/webadderallorg/Recordly.git recordly
 3cd recordly
 4
 5# 2. 安裝依賴
 6npm install
 7
 8# 3. 開發模式執行
 9npm run dev
10
11# 4. 打包建置
12npm run build           # 自動偵測平台
13npm run build:mac       # macOS
14npm run build:win       # Windows
15npm run build:linux     # Linux

建置腳本說明

指令用途
npm run devVite dev server + Electron
npm run build完整建置(含 native helpers)
npm run build:platform-native-helpers僅建置原生 helper
npm run build:whisper-runtime建置 Whisper 語音辨識 runtime
npm run build:nvidia-cuda-compositor建置 CUDA 合成器
npm run lintBiome 程式碼檢查
npm run testVitest 測試
npm run i18n:check國際化完整性檢查

4.4 macOS 建置後注意事項

本地建置的 app 可能被 macOS quarantine 阻擋:

1xattr -rd com.apple.quarantine /Applications/Recordly.app

5. 功能深度解析

5.1 錄製系統

Recordly 的錄製系統根據作業系統使用不同的原生後端:

平台擷取方式音訊方式游標隱藏
macOSScreenCaptureKitSCK 原生完全支援
WindowsWGC (Build 19041+)WASAPI支援 (需 WGC)
Windows (舊版)Electron CaptureElectron部分支援
LinuxElectron CapturePipeWire 建議不支援

錄製流程

  1. 啟動 Recordly → 選擇螢幕/視窗源
  2. 設定麥克風與系統音訊選項
  3. 倒數計時後開始錄製
  4. 停止錄製 → 自動進入編輯器

5.2 時間軸編輯器

編輯器是 Recordly 的核心差異化功能。基於 React 構建,使用 PixiJS 進行即時場景合成預覽。

主要功能

  • 修剪 (Trim):選取時間範圍移除不需要的段落
  • 縮放 (Zoom):手動設定或使用自動建議的縮放區域,v1.3.0 後使用「camera physics」讓縮放過渡更自然
  • 速度調整 (Speed):加速/減速指定區域
  • 標註 (Annotation):新增文字、圖片、圖形標註
  • 音訊區域 (Audio Region):疊加額外音訊
  • 裁切 (Crop):裁切錄製畫面
  • 復原/重做 (Undo/Redo):完整的編輯歷史記錄

5.3 游標系統

Recordly 不直接使用系統游標,而是渲染一個獨立的「美化游標疊加」,並提供以下控制:

效果說明
Smoothing平滑化游標移動軌跡
Motion Blur快速移動時的動態模糊
Click Bounce點擊時的彈跳動畫
Click Effectsv1.3.x 新增的點擊視覺效果
Sway游標輕微搖擺(更自然的感覺)
Loop Mode迴圈匯出時的游標銜接
Size Control可調整疊加游標大小

5.4 匯出管線


graph LR
    subgraph "Export Pipeline"
        EDITOR["編輯器狀態"] --> PIXI["PixiJS
場景渲染"] PIXI --> FRAMES["影格序列"] FRAMES --> |MP4| FFMPEG["FFmpeg
H.264 編碼"] FRAMES --> |GIF| GIFENC["GIF
編碼器"] FRAMES --> |CUDA| CUDA["NVIDIA
CUDA 合成"] CUDA --> FFMPEG FFMPEG --> OUTPUT["輸出檔案"] GIFENC --> OUTPUT end

匯出選項:

  • MP4:標準 H.264 影片,品質可調
  • GIF:輕量分享格式,可調幀率/迴圈/尺寸
  • Lightning Export (Beta):使用 WebCodecs 加速(實驗性)
  • CUDA Export:NVIDIA GPU 加速合成,顯著降低匯出時間

5.5 專案持久化

Recordly 使用 .recordly 專案檔儲存編輯器狀態,包含:

  • 來源媒體路徑
  • 時間軸區域設定(zoom/trim/speed/annotation)
  • 游標與 webcam 設定
  • 框架造型設定
  • 匯出偏好

這讓使用者可以隨時儲存、關閉、再重新開啟繼續編輯。


6. 資安審查報告

6.1 整體評級

面向評級說明
硬編碼機密🟢 安全未發現任何硬編碼的 API key、token 或 password
Electron 安全設定🟢 良好所有視窗均設定 nodeIntegration: false + contextIsolation: true
eval / exec 注入🟢 安全原始碼中未發現 eval()new Function()child_process.exec
HTTP 明文連線🟡 注意ExtensionIcon.tsx 中有 http:// 檢查邏輯,但僅用於 URL 判斷,非實際連線
遠端程式碼載入🟢 安全未發現動態 require/import 遠端腳本
Shell 注入🟢 安全未使用 shell: true 或模板字串構建 shell 指令
遙測/分析🟢 安全無第三方分析 SDK(Sentry/Mixpanel/Posthog 等均不存在)
.env 檔案🟢 安全未在 repo 中發現 .env 檔案
原生二進位🟡 注意repo 內含預編譯 native binary(macOS/Windows),需信任來源
Extension 系統🟡 注意Extension loader 有 manifest 驗證,但社群 extension 安全性取決於個別開發者
自動更新🟢 安全使用 electron-updater 走標準 HTTPS 管道

6.2 詳細發現

🟢 Electron 安全配置(良好)

所有 5 個 BrowserWindow 實例均正確設定:

1webPreferences: {
2    nodeIntegration: false,     // 禁止 renderer 直接存取 Node.js
3    contextIsolation: true,     // 啟用 context 隔離
4}

透過 contextBridge.exposeInMainWorld("electronAPI", {...}) 安全暴露 API,符合 Electron 安全最佳實踐。

🟡 預編譯 Native Binary

electron/native/bin/ 目錄下包含預編譯的二進位檔案:

  • macOS arm64: 11 個 binary(含 whisper、ScreenCaptureKit helper、cursor monitor 等)
  • macOS x64: 4 個 binary
  • Windows x64: 5 個 binary(.exe)

風險評估:這些 binary 由專案維護者編譯,原始碼在 electron/native/ 下可驗證。但使用者應注意,預編譯 binary 的供應鏈安全取決於維護者的建置環境。

🟡 Extension 系統

Extension loader (electron/extensions/extensionLoader.ts) 實作了 manifest 驗證機制。但社群開發的 extension 可能包含任意 JavaScript,使用者安裝第三方 extension 前應評估信任度。

🟢 無遙測

專案不包含任何第三方分析或遙測 SDK。grep 結果中的 “telemetry” 命中僅為游標追蹤資料結構(CursorTelemetryPoint)和 CSS class 名稱中的 “tracking”(字間距),非隱私追蹤。

6.3 建議

  1. Extension 安全:安裝社群 extension 前,建議先檢視其原始碼
  2. Native Binary 驗證:如有安全需求,可自行從原始碼重新編譯 native helpers
  3. 自動更新:建議啟用但設定手動安裝(目前預設 autoDownload: false),先確認版本再更新

7. Extension 系統與 Marketplace

7.1 架構

Recordly 的 Extension 系統允許社群開發者擴充應用功能:

元件檔案功能
Extension TypesextensionTypes.ts定義 manifest 結構
Extension LoaderextensionLoader.ts載入/驗證/管理 extension
Extension MarketplaceextensionMarketplace.ts從 marketplace 瀏覽/安裝
Extension IPCextensionIpc.ts主程序 ↔ Extension 通訊
Error UtilserrorUtils.ts錯誤處理

7.2 Extension 能力

根據文件,Extension 可提供:

  • 游標點擊音效
  • 裝置框架(手機/平板外框)
  • 瀏覽器模型
  • 桌布/背景
  • 渲染 hooks
  • 設定面板

7.3 Marketplace

Recordly Marketplace 提供瀏覽與安裝社群 extension 的入口。Extension Manager UI 整合在編輯器中,方便管理已安裝的 extension。


8. 原生層技術剖析

8.1 macOS 原生 (Swift)

檔案功能行數
ScreenCaptureKitRecorder.swift使用 SCK 錄製螢幕/音訊~主要
ScreenCaptureKitWindowList.swift列出可擷取的視窗~輔助
NativeCursorMonitor.swift原生游標位置追蹤~輔助
SystemCursorAssets.swift擷取系統游標圖示~輔助

macOS 14.0+ 限制:ScreenCaptureKit 是 macOS 14 引入的現代擷取框架,提供比舊版 CGWindowListCopyWindowInfo 更高效的螢幕/音訊擷取能力。

8.2 Windows 原生 (C++)

兩套擷取管線並存:

WGC Capture(主要)

  • wgc-capture/: Windows Graphics Capture API
  • 包含 WGC session 管理、WASAPI loopback 音訊、Media Foundation 編碼
  • 需 Windows 10 Build 19041+

DXGI Capture(備用)

  • windows-capture/: DXGI Desktop Duplication
  • 較舊的擷取方式,作為 WGC 不支援時的 fallback

8.3 CUDA 合成器

nvidia-cuda-compositor/src/main.cu (~3.3K 行) 提供 GPU 加速的影片合成:

  • 在 NVIDIA GPU 上進行場景合成(背景 + 影片 + 游標 + webcam)
  • 透過 Media Foundation Sink Writer 輸出 H.264
  • 顯著降低 MP4 匯出時間

8.4 Whisper 整合

Recordly 內建 Whisper 語音辨識 runtime,用於自動字幕生成:

  • 本地執行,無需雲端 API
  • macOS arm64 提供預編譯 binary
  • 支援 VAD (Voice Activity Detection) 分段

9. 效能最佳化與 GPU 加速

9.1 GPU 相關設定

Recordly 主程序啟動時設定了多項 GPU 最佳化:

1app.commandLine.appendSwitch("ignore-gpu-blocklist");
2app.commandLine.appendSwitch("enable-unsafe-webgpu");
3app.commandLine.appendSwitch("enable-gpu-rasterization");

另有平台特定的 GPU 切換邏輯(gpuSwitches.ts),根據作業系統與環境變數調整 ANGLE/GL 後端。

9.2 NVIDIA CUDA Export

對於配備 NVIDIA GPU 的系統,可啟用 CUDA 加速匯出:

  • 在編輯器設定中 opt-in(useNvidiaCudaExportOptIn.ts
  • 透過 recordly-nvidia-cuda-compositor native binary 執行
  • 利用 GPU 平行處理場景合成,大幅縮短匯出時間

9.3 匯出管線最佳化

  • Export Stream:串流式匯出,避免一次性載入所有影格到記憶體
  • Native Video Export:繞過 WebCodecs,直接使用原生 FFmpeg/MF 編碼
  • 靜態佈局路由規劃:根據場景複雜度自動選擇最佳匯出路徑

10. 常見問題與限制

10.1 平台限制

限制平台說明
游標隱藏不支援LinuxElectron capture 不支援排除系統游標
雙游標問題Linux啟用渲染游標疊加時,可能同時出現系統游標與美化游標
系統音訊需 PipeWireLinux預設可能無法擷取系統音訊
SCK 權限macOS首次使用需授予螢幕錄製 + 輔助使用權限
WGC 需求Windows舊版 Windows 10 會使用 fallback 擷取,游標隱藏受限

10.2 已知活躍問題

根據近期 Issues,目前社群回報的主要問題:

  • 音訊問題:錄音斷斷續續 (#667) / 音訊迴音 (#662) / 音訊問題 (#658)
  • 匯出問題:Lightning Beta 在 Linux 失敗 (#644)
  • HUD 互動:無法與浮動視窗後方的應用互動 (#657)
  • 裁切延遲:裁切操作時出現 lag (#603)

10.3 macOS 疑難排解

「App cannot be opened」錯誤

1xattr -rd com.apple.quarantine /Applications/Recordly.app

ScreenCaptureKit 權限

  • 系統偏好設定 → 隱私與安全 → 螢幕錄製 → 啟用 Recordly
  • 系統偏好設定 → 隱私與安全 → 輔助使用 → 啟用 Recordly

11. 總結與評估

11.1 優勢

面向評分說明
功能完整度★★★★☆錄製/編輯/匯出一站式,auto-zoom 是殺手功能
程式碼品質★★★★☆TypeScript 強型別、Biome lint、Vitest 測試
安全性★★★★☆Electron 安全配置正確、無遙測、無硬編碼機密
跨平台支援★★★☆☆macOS 最完整、Windows 次之、Linux 受限
社群活躍度★★★★★16K+ stars、活躍 PR/Issue、定期 release
擴充性★★★★☆Extension 系統 + Marketplace
文件品質★★★★☆README 詳盡、有 CONTRIBUTING 指南

11.2 風險與考量

  1. AGPL-3.0 授權:任何修改或 SaaS 使用都必須開源全部程式碼,對商業使用有嚴格限制
  2. 單一維護者:目前主要由 @webadderall 一人維護,長期可持續性取決於社群成長
  3. 預編譯 binary:repo 內含預編譯 native binary,供應鏈安全需信任維護者
  4. Linux 體驗:游標隱藏不支援 + 系統音訊依賴 PipeWire,Linux 使用者體驗明顯弱於 macOS/Windows

11.3 適用建議

情境建議
macOS 使用者需要 Screen Studio 替代品強烈推薦
Windows 使用者需要專業展示影片推薦(確認 Build 版本)
Linux 使用者可用但有限制,建議了解限制後再採用
需要嵌入商業 SaaS注意 AGPL-3.0 授權要求
內部團隊 demo 影片製作非常適合,免費且功能豐富
需要程式化 / CLI 錄製不適合(GUI 為主的設計)

11.4 未來展望

根據近期 commit 與 issue 趨勢,Recordly 正在以下方向發展:

  • 字幕系統:Whisper 整合 + SRT/VTT 匯出
  • Extension 生態:社群 extension 數量持續增長
  • 效能提升:CUDA 匯出 + WebCodecs Lightning 實驗
  • 國際化:多語言支援持續擴展(印尼語等新語言 PR)
  • 點擊效果:v1.3.x 引入 click effects 與 spotlight 特效