Screencast MCP

io.github.TMHSDigital由 GitHub 帳號 TMHSDigital 發布v0.48.0更新於 Nov 1, 2026

Let AI agents record the Windows screen, watch it as frames, and edit it with ffmpeg

概覽

AI 產生的概覽

Windows 螢幕錄影 MCP 伺服器,讓助理錄製桌面、以影格檢視錄影內容,並用 ffmpeg 在本機剪輯。

可以做什麼
  • 錄製、暫停、繼續與停止桌面、螢幕、視窗或區域的螢幕錄影,另支援單張截圖與重播緩衝
  • 檢視素材:縮圖拼版、抽格、畫面差異比對、OCR 文字定位、等待畫面變化,以及長錄影的可搜尋文字時間軸
  • 剪裁與轉檔:裁切片段、多段擷取、串接、裁切畫面、縮放、變速、壓縮、匯出 GIF/WebP、移除靜止片段、遮蔽,以及一次完成的管線編輯
  • 製作:標註框、縮放、按鍵與游標疊加、背景框、標題卡、轉場、精華合輯、章節、字幕與平台匯出預設
  • 音訊:擷取、響度正規化、降噪、配樂、離線旁白與本機語音轉錄
  • 打包成果:依錄影產生錯誤報告資料夾與逐步操作指南
適用情境
適合在 Windows 上希望程式助理重現畫面上的錯誤、驗證介面變更,或自行錄製、檢查並剪輯示範片段的開發者。檢視與剪輯類工具在裝有 ffmpeg 的其他系統上也能使用。
執行需求
以本機 stdio 程序執行;錄影需 Windows 10 或 11,並需 Node.js 22+ 與 PATH 中的 FFmpeg 8 或更新版本(或設定 FFMPEG_PATH、FFPROBE_PATH)。選用設定包括 SCREENCAST_HOME、SCREENCAST_ALLOWED_DIRS、SCREENCAST_WHISPER_MODEL 與 SCREENCAST_TOOLSETS。不需帳號或 API 金鑰。
安裝前請注意
錄影會拍下畫面上的所有內容,可能包含機密資訊;遮蔽只涵蓋你指定的矩形區域,需先用 find_text 定位。內嵌影格、OCR 文字與事件摘要會傳送給模型供應商。錄影期間事件記錄會記錄全系統的點擊、捲動與游標位置,但不記錄輸入的文字。工具會在 SCREENCAST_HOME 下寫入檔案,並在允許時覆寫既有輸出。非商業用途採用 CC BY-NC-ND 4.0 授權。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Screencast MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Screencast MCP

An MCP server that lets an agent record the screen, watch the footage, and make minimal ffmpeg edits — over stdio, on Windows.

Capture the desktop, a monitor, a window, or a region; sample a recording into frames the agent can actually look at; trim, crop, redact, annotate, zoom toward clicks, and export for GitHub or social. No cloud service, no telemetry: ffmpeg and ffprobe behind 58 typed tools.

For developers who want their coding agent to see and prove UI changes on Windows: bug repros, UI verification, and demo clips the agent records, checks, and edits itself. Capture is Windows-only; the watch and edit tools work on any OS with ffmpeg. Free for non-commercial use (CC BY-NC-ND 4.0); why not OBS, Playwright, or a screenshot MCP?


[Documentation]


[npm] [MCP Registry] [CI] [License: CC BY-NC-ND 4.0] [Last commit]

[TypeScript] [Node.js] [Model Context Protocol] [ffmpeg] [Capture]


[A settings window recorded by screencast-mcp: the camera glides in on the Save button as the cursor clicks it, a red ring marks the click, then the view eases back out as a green Saved banner appears.]

Made with the tool: start_recording with events: true, one click, then zoom { highlightClicks: true } and export_gif. How it was made · more workflows

Quick start · Tools · Configuration · More docs · Privacy

Quick start

The fastest path: npx -y @tmhs/screencast-mcp setup checks FFmpeg 8, OCR, and speech, offers winget install Gyan.FFmpeg when FFmpeg is missing, and adds the server to Claude Desktop, Claude Code, Cursor, and VS Code (backing up each config). --dry-run shows the changes first; --test records a 3-second GIF to prove it works. Or set it up by hand:

You need Windows 10 or 11, Node.js 22+, and FFmpeg 8 or newer on PATH (winget install Gyan.FFmpeg, the full build). Older builds run most tools, but transcribe (the whisper filter) and backend: "wgc" (gfxcapture) need FFmpeg 8, and essentials or distro builds can lack them (Ubuntu LTS apt install ffmpeg gives 6.x). Capture is Windows-only; the watch, edit, and produce tools work anywhere ffmpeg runs. After connecting, ask the agent to run doctor: it reports the ffmpeg version, the filters and devices it has, OCR, and anything missing.

Add it to your client:

ClientHow
Claude Codeclaude mcp add screencast -- cmd /c npx -y @tmhs/screencast-mcp, or the plugin (the server plus bug-repro, README-demo, and UI-verify skills): /plugin install screencast --marketplace TMHSDigital/screencast-mcp (older Claude Code: /plugin marketplace add TMHSDigital/screencast-mcp, then /plugin install screencast@screencast-mcp)
Claude DesktopDownload screencast-mcp.mcpb from the latest release and open it (one click)
Cursor, VS Code, othersThe JSON config below, or step-by-step on Connect your client
json
{ "mcpServers": { "screencast": { "command": "npx", "args": ["-y", "@tmhs/screencast-mcp"] } } }

Then ask your agent:

Record my VS Code window for five seconds while I reproduce the bug, then show me the frames where something changed.

More in the workflows: a bug-repro GIF for a PR, a README demo, a UI verification loop, a social clip, a cheap review of a long recording, zoom toward clicks, and the whole edit in one call.

Why not just...

The core is the watch loop: the agent records, samples the footage into frames it can see, and checks what actually happened on screen. Capture only ever happens on an explicit tool call, and output lands under SCREENCAST_HOME, never in your checkout.

Instead ofThe difference
OBS, ShareX, Game BarBuilt for a person at the controls. Here the agent starts and stops the recording, looks at the frames, and makes the edits through typed tools, with no GUI step.
Playwright or Puppeteer videoBrowser pages only, and the video is a file the model never sees. Here: any window or monitor, frames returned to the model, plus wait_for_change, find_text, and screen_diff for checking what happened.
A screenshot-only MCP serverSingle stills. Here: video over time, an input event log, scene-change sampling, redaction, and export, so the agent can show a sequence, not one moment.

Tools

58 tools in 6 toolsets, generated from the server's own schemas by npm run docs (do not edit between the markers). Each name links to its reference page with every parameter, an example call, and what it returns; mcp-tools.json is the same list as JSON, and llms-full.txt all of it in one file.

Core

Always loaded, whatever SCREENCAST_TOOLSETS selects.

ToolWhat it does
get_media_infoProbe a media file with ffprobe and return duration, resolution, frame rate, codecs, container format, and size.
doctorCheck the setup: ffmpeg/ffprobe (FFmpeg 8+?), optional filters, capture devices, Windows OCR, settings, and enabled toolsets; problems says what is missing and how to fix it. Call on first use or when a tool reports a missing feature.

Capture

Record or screenshot the desktop, a monitor, a window, or a region. Every capture is an explicit tool call: nothing records on its own.

ToolWhat it does
start_recordingStart a background screen recording. Returns a session id; finalize it with stop_recording. Never auto-starts.
stop_recordingStop a recording gracefully so the file is finalized; returns the path and duration.
pause_recordingPause a recording; until resume_recording nothing is captured, and the gap is left out of the file, events, and markers.
resume_recordingResume a paused recording (same target and settings).
save_replaySave the last N seconds of a replay buffer (start_recording replayBufferSec) to an mp4; the buffer keeps running.
list_sessionsList all recording sessions (active and finished) with their status, target, output path, and whether the process is still alive.
get_sessionInspect a single recording session by id, including live status and whether its output file exists on disk.
read_eventsRead the input events (clicks, scroll, cursor, shortcuts, typing bursts) of a recording made with events: true, in video seconds and pixels; e.g. types: ['down'], then sample_frames there.
add_markerMark a labelled moment on a recording, live or at a second. Kept in the session and a sidecar; chapters and pipeline turn markers into chapters.
screenshotCapture one PNG of the screen, a monitor, a window, or a region, returned inline and by path.
list_audio_devicesList DirectShow audio devices and flag a likely loopback (Stereo Mix or a virtual-audio driver), for start_recording's audio.device.
list_video_devicesList DirectShow cameras for start_recording's webcam.device.
list_targetsList the desktop, monitors, and visible windows (topmost first, with capturability per backend). Each entry has a target string to pass as-is to capture tools; use it instead of guessing a title.

Watch

Turn footage into something a model can read: frames, contact sheets, diffs, OCR, and a searchable text timeline.

ToolWhat it does
review_recordingOpen a recording for a person to review: in MCP Apps clients an inline player to scrub, trim, and redact, then export; elsewhere just the video's details.
player_framesPreview frames for the review player: JPEGs on an even grid over the video plus frames at scene changes, with their real times. Used by the inline player; agents should use sample_frames or contact_sheet instead. (app-only: called by the review player, not the agent)
sample_framesSample PNG frames from a video (by fps, timestamps, or scene changes) and return the first few inline so the model can see what happened.
contact_sheetTile timestamped frames of a video into one image to see a whole recording at a glance (the cheapest first look).
screen_diffCompare two screenshots or frames: SSIM score, changed share, and changed boxes in b's pixels, to check a UI change happened only where expected.
wait_for_changeWait until part of the screen changes or settles, instead of guessing a sleep. Returns the elapsed time, changed regions (screenshot pixels; add origin for desktop), and the final state.
find_textOCR (built into Windows) on the screen, an image, or video frames, with line and match boxes in image pixels (add origin for desktop coordinates). Locate UI text or secrets (e.g. regex 'sk-|ghp_|api.?key') to redact. Best-effort: review results.
index_recordingBuild a recording's text timeline (.index.json: OCR per scene, events, markers, transcript) for search_recording.
search_recordingSearch an index_recording timeline (screen text, events, markers, transcript): timecoded hits, best first, secrets masked. No frames unless asked.

Edit

Cut, convert, compress, and redact. A tool that writes a file refuses to replace an existing output unless overwrite: true; default output paths are always unique.

ToolWhat it does
trimCut a video down to one sub-clip by start + (end or duration). For several segments use clip; to combine with other edits use pipeline.
concatJoin videos end to end with hard cuts: stream copy when they match, else a re-encode (mode says which). For transitions use xfade_transition or assemble_highlights.
convertConvert media to mp4, webm, or gif. For a size-bounded GIF/WebP prefer export_gif; for a smaller mp4, compress or export_preset.
export_gifExport an animated GIF or WebP that fits a size budget (for PRs, issues, READMEs), stepping fps, width, and quality down until it fits.
cropCrop a video to a pixel rectangle; one running off the frame is rejected.
scaleResize a video to a target width and/or height and re-encode. Provide one side to keep the aspect ratio, or both to set an exact size.
speedChange playback speed by a factor (>1 faster, <1 slower) and re-encode. Audio is retempo'd to match when the source has an audio track.
compressRe-encode a video smaller (H.264 CRF ladder, optional width cap). For a platform target use export_preset.
clipExtract several frame-exact segments, each to its own file. For one segment, trim does the same.
cut_idleRemove dead air: cut stretches where the screen is frozen (and silent), keeping a short pad. Returns the time saved.
cut_by_transcriptEdit a video by its transcript: cut quoted text, cue numbers, or fillers. Also writes the re-timed .srt.
redact_regionCover given rectangles in a video (e.g. secrets on screen). Not automatic detection: find them with find_text redact: true. Off-frame regions are rejected.
pipelineRun several edits (trim, crop, scale, speed, cut_idle, redact, callout, keystroke_overlay, cursor, reframe, zoom, backdrop, audio, burn_subtitles, then optionally export_preset or export_gif) in one ffmpeg pass: one re-encode, no intermediate files. Prefer it over chaining edit tools; a recipe does the usual polish in one call.

Produce

Annotate, frame, and assemble a finished piece. Tools that combine clips normalize each input to a common resolution, fps, and audio rate first.

ToolWhat it does
overlayComposite an image or video (logo, watermark, picture-in-picture) onto a video at a pixel position, optionally scaled and time-limited; keeps the base's audio and length.
calloutAnnotate a video with timed boxes, text labels, and arrows. Fallback fonts used are listed in fallbackFonts; characters no font covers are reported in warnings.
keystroke_overlayBurn keycast-style badges for shortcuts, clicks, and typing from the recording's input event log (start_recording events: true). Never shows typed text: the log has none.
cursorDraw a smoothed, scaled cursor that hides when idle from the event log of a start_recording cursor: "events" recording (no OS cursor in the video), with click ripples and an optional spotlight.
backdropFrame a video or screenshot on a gradient, color, or wallpaper with padding, rounded corners, and a drop shadow, optionally on a 16:9/1:1/9:16/4:5 canvas.
burn_subtitlesBurn SRT/ASS subtitles (e.g. from transcribe) into a video in the bundled font.
chaptersWrite chapters (markers, scene changes, transcript, or a list) into an mp4/mkv/mov copy without re-encoding; returns YouTube chapter text. Can mux an SRT as soft subtitles.
xfade_transitionJoin two videos with an xfade transition (audio crossfaded); they need not match in size, fps, or audio. For more clips use assemble_highlights.
assemble_highlightsStitch clips (including title cards) into one video with cuts or xfade transitions; they need not match in size, fps, or audio.
title_cardGenerate a title card clip (centered text on a solid background, silent audio track) to stitch in with assemble_highlights. Uncoverable characters are reported in warnings.
reframeRe-aspect a video to 16:9, 9:16, 1:1, or 4:5 by padding or cropping.
zoomSmooth animated zoom-and-pan into the action and back out, from keyframes or planned from logged clicks or screen changes.
export_presetEncode a platform-ready H.264 file (aspect, fps, bitrate, faststart) for a named platform.
bug_reportPackage a recording as a paste-ready repro folder: secret-scanned, redacted clip and GIF, contact sheet, steps from the event log, OCR'd errors, environment, report.md for gh issue create --body-file.
step_guideTurn a recording's event log into a numbered how-to: a ringed screenshot and caption per step, marker headings; Markdown and/or one HTML file. Never includes typed text.

Audio

Extract, clean up, level, transcribe, and score the soundtrack.

ToolWhat it does
extract_audioExtract the audio track of a media file to its own file (mp3, aac, wav, or copy). Returns the output path.
normalize_audioNormalize loudness to a delivery target (two-pass EBU R128 loudnorm); video is copied. Reports loudness before and after.
denoiseReduce steady background noise (fan, hum, hiss) in a recording's audio with an adaptive FFT denoiser. Video is copied untouched. Returns the output path.
transcribeTranscribe a recording's speech to an SRT subtitle file, locally, with FFmpeg 8's whisper filter (needs a whisper.cpp model file). Returns the SRT path and the text. Pair with burn_subtitles to caption the video.
music_bedLay music under a video: looped or trimmed to length, faded, leveled, and mixed with any existing audio. Video is stream-copied.
narrateOffline voiceover with the built-in Windows voices: speaks each line at its time or marker over the audio, plus an SRT.

[!IMPORTANT] redact_region covers only the rectangles you declare; it is not automatic secret detection (use find_text with redact: true to locate them). Prefer the default box style for real secrets: it is a solid, irreversible fill, while blur and pixelate can be partially recovered.

Every capture tool takes one target string: full, monitor:<index>, window:<title>, window:exe=<app.exe>, window:hwnd=<handle>, or region:<x>,<y>,<w>,<h>; list_targets returns ready-made ones. See start_recording and the Windows notes for how windows, monitors, and backend: "wgc" are captured.

Configuration

ffmpeg and ffprobe must be on PATH, or set FFMPEG_PATH / FFPROBE_PATH. All settings are optional environment variables; doctor reports the ones in effect.

VariableDefaultPurpose
SCREENCAST_HOME<homedir>/.screencast-mcpWhere recordings, frames, screenshots, and edits are written
SCREENCAST_ALLOWED_DIRSnone;-separated folders tools may also read from and write to; when set, or when the client sends roots, files outside SCREENCAST_HOME, the roots, and these folders are refused. Without either, replacing an existing file outside SCREENCAST_HOME is refused. Network (UNC) paths are always refused
SCREENCAST_MAX_RECORDING_SEC3600Default recording cap (0 disables it)
SCREENCAST_JOB_TIMEOUT_MSscales with lengthOverride the edit job timeout
SCREENCAST_WHISPER_MODELnonewhisper.cpp model for transcribe
SCREENCAST_RETENTION_DAYSoffDelete screenshots, frames, and leftover raw event logs older than this many days at startup (never recordings or edits)
SCREENCAST_PS_TIMEOUT_MS20000 (OCR 60000)Limit for the PowerShell helpers that list monitors and windows and run OCR
SCREENCAST_CONFIRM_CAPTUREoffSet to 1 to ask the user to confirm every live capture through MCP elicitation; clients without elicitation are refused
SCREENCAST_TOOLSETSallComma-separated toolsets to expose; the rest are not loaded, which shrinks the tool list the agent pays for on every turn (core is always on)
FFMPEG_PATH / FFPROBE_PATHPATH lookupExplicit ffmpeg / ffprobe binaries
ToolsetTools
capturestart_recording, stop_recording, pause_recording, resume_recording, save_replay, list_sessions, get_session, read_events, add_marker, screenshot, list_audio_devices, list_video_devices, list_targets
watchreview_recording, player_frames, sample_frames, contact_sheet, screen_diff, wait_for_change, find_text, index_recording, search_recording
edittrim, concat, convert, export_gif, crop, scale, speed, compress, clip, cut_idle, cut_by_transcript, redact_region, pipeline
produceoverlay, callout, keystroke_overlay, cursor, backdrop, burn_subtitles, chapters, xfade_transition, assemble_highlights, title_card, reframe, zoom, export_preset, bug_report, step_guide
audioextract_audio, normalize_audio, denoise, transcribe, music_bed, narrate
core (always)get_media_info, doctor

More docs

  • Usage: workflows walk through real tool calls and outputs: a bug-repro clip, a README demo, a UI verification loop, a social clip, a long-recording review, zoom toward clicks, and the whole edit in one pipeline call. Each tool's parameters and results are on its reference page.

  • Command line and CI: the same package is a headless CLI (npx -y @tmhs/screencast-mcp record -- npm run test:e2e, ... call doctor), and a GitHub Action records your test run on windows-latest and uploads the evidence on failure (being published to GitHub Marketplace). See the CI page:

    yaml
    - uses: TMHSDigital/screencast-mcp@v0  with:    command: npm run test:e2e
  • Prompts and resources: the server also ships MCP prompts that clients show as slash commands (bug-repro-clip, file-bug-report, document-steps, demo-gif, verify-ui-change, review-recording) and screencast://sessions resources for attaching recordings without a filesystem tool.

  • Threat model and Windows notes: what capture can expose, and how window, monitor, WGC, and system-audio capture behave, are on the docs home page.

Privacy

  • No network requests, no telemetry. The server runs ffmpeg, ffprobe, and PowerShell locally and talks to your client over stdio. OCR (find_text) and speech (narrate) use the engines built into Windows.
  • What a tool returns goes to your model provider. Inline frames, OCR text, and event summaries reach your agent like any tool result; files on disk stay on disk unless a tool returns them or you share them.
  • Everything is stored under SCREENCAST_HOME (recordings/, screenshots/, frames/, edits/, sessions.json) unless a call names another path. find_text, wait_for_change, and screen_diff delete their captures after the call by default.
  • The event log never records typed text. Only with start_recording events: true (or cursor: "events"), and only while that recording runs: clicks, scrolls, and cursor positions system-wide, and typing as bursts on a 0.5 s grid with no key names (keys: "shortcuts" also names Ctrl/Alt/Win chords). There is no microphone capture; system audio only with audio.source = system.
  • Deleting data. Delete files under SCREENCAST_HOME, or set SCREENCAST_RETENTION_DAYS; recordings and edits are never deleted automatically.

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md (development setup and project structure) and the Code of Conduct. Security reports go through SECURITY.md.

License

Released under the CC-BY-NC-ND-4.0 license: free to use and share for non-commercial purposes, with attribution and without modification. For other uses, open an issue.

Can I use it at work? Only for non-commercial purposes under this license. If your use is commercial (inside a paid product or service, or work done mainly for commercial advantage), or you are not sure, open an issue to ask about a commercial license. The licensing model is described in the TMHSDigital licensing standard.

來源:README.md,提交 880b43e

工具

57

start_recording

Start Recording

Start a background screen recording. Returns a session id; finalize it with stop_recording. Never auto-starts.

輸入參數fpskeysaudiocursoreventsoutputtarget必填webcambackendencoderqualityoverwrite另有 3 個

stop_recording

Stop Recording

Stop a recording gracefully so the file is finalized; returns the path and duration.

輸入參數savesessionId必填

pause_recording

Pause Recording

Pause a recording; until resume_recording nothing is captured, and the gap is left out of the file, events, and markers.

輸入參數sessionId必填

resume_recording

Resume Recording

Resume a paused recording (same target and settings).

輸入參數sessionId必填

save_replay

Save Replay

Save the last N seconds of a replay buffer (start_recording replayBufferSec) to an mp4; the buffer keeps running.

輸入參數outputlastSecreencodeoverwritesessionId必填

list_sessions

List Sessions

List all recording sessions (active and finished) with their status, target, output path, and whether the process is still alive.

無需輸入參數。

get_session

Get Session

Inspect a single recording session by id, including live status and whether its output file exists on disk.

輸入參數sessionId必填

read_events

Read Input Events

Read the input events (clicks, scroll, cursor, shortcuts, typing bursts) of a recording made with events: true, in video seconds and pixels; e.g. types: ['down'], then sample_frames there.

輸入參數tofrominputlimittypessessionIdinFrameOnly

add_marker

Add Marker

Mark a labelled moment on a recording, live or at a second. Kept in the session and a sidecar; chapters and pipeline turn markers into chapters.

輸入參數atinputlabel必填sessionId

review_recording

Review Recording

Open a recording for a person to review: in MCP Apps clients an inline player to scrub, trim, and redact, then export; elsewhere just the video's details.

輸入參數inputsessionId

screenshot

Take Screenshot

Capture one PNG of the screen, a monitor, a window, or a region, returned inline and by path.

輸入參數outputtarget必填backendoverwriteexactTitlereturnImagemaxImageWidth

sample_frames

Sample Frames

Sample PNG frames from a video (by fps, timestamps, or scene changes) and return the first few inline so the model can see what happened.

輸入參數fpsmodeinput必填dedupemaxFramesoutputDirtimestampsreturnImagesmaxImageWidthsceneThresholdmaxInlineImages

contact_sheet

Contact Sheet

Tile timestamped frames of a video into one image to see a whole recording at a glance (the cheapest first look).

輸入參數modecountinput必填outputpostercolumnsoverwritetileWidthreturnImagemaxImageWidthsceneThreshold

screen_diff

Screen Diff

Compare two screenshots or frames: SSIM score, changed share, and changed boxes in b's pixels, to check a UI change happened only where expected.

輸入參數a必填b必填returnImagepixelThreshold

wait_for_change

Wait for Screen Change

Wait until part of the screen changes or settles, instead of guessing a sleep. Returns the elapsed time, changed regions (screenshot pixels; add `origin` for desktop), and the final state.

輸入參數keepmodetarget必填settleSecexactTitleintervalMstimeoutSecreturnImagepixelThreshold

find_text

Find Text (OCR)

OCR (built into Windows) on the screen, an image, or video frames, with line and match boxes in image pixels (add `origin` for desktop coordinates). Locate UI text or secrets (e.g. regex 'sk-|ghp_|api.?key') to redact. Best-effort: review results.

輸入參數keepinputqueryregexredacttargetbackendmaxFramestimestampexactTitlereturnImagescanEverySec

index_recording

Index Recording

Build a recording's text timeline (<video>.index.json: OCR per scene, events, markers, transcript) for search_recording.

輸入參數forceinputmaxFramessessionIdtranscriptsceneThreshold

search_recording

Search Recording

Search an index_recording timeline (screen text, events, markers, transcript): timecoded hits, best first, secrets masked. No frames unless asked.

輸入參數inputlimitquery必填regeximagessessionId

get_media_info

Get Media Info

Probe a media file with ffprobe and return duration, resolution, frame rate, codecs, container format, and size.

輸入參數input必填

trim

Trim Video

Cut a video down to one sub-clip by start + (end or duration). For several segments use clip; to combine with other edits use pipeline.

輸入參數endexactinput必填start必填outputdurationoverwrite

concat

Concatenate Videos

Join videos end to end with hard cuts: stream copy when they match, else a re-encode (`mode` says which). For transitions use xfade_transition or assemble_highlights.

輸入參數inputs必填outputoverwrite

convert

Convert Format

Convert media to mp4, webm, or gif. For a size-bounded GIF/WebP prefer export_gif; for a smaller mp4, compress or export_preset.

輸入參數fpsinput必填widthformat必填outputoverwrite

export_gif

Export GIF or WebP

Export an animated GIF or WebP that fits a size budget (for PRs, issues, READMEs), stepping fps, width, and quality down until it fits.

輸入參數fpsinput必填startwidthformatoutputdurationmaxBytesoverwrite

crop

Crop Video

Crop a video to a pixel rectangle; one running off the frame is rejected.

輸入參數x必填y必填input必填width必填height必填outputoverwrite

scale

Scale Video

Resize a video to a target width and/or height and re-encode. Provide one side to keep the aspect ratio, or both to set an exact size.

輸入參數input必填widthheightoutputoverwrite

speed

Change Speed

Change playback speed by a factor (>1 faster, <1 slower) and re-encode. Audio is retempo'd to match when the source has an audio track.

輸入參數input必填factor必填outputoverwrite

overlay

Overlay Image or Video

Composite an image or video (logo, watermark, picture-in-picture) onto a video at a pixel position, optionally scaled and time-limited; keeps the base's audio and length.

輸入參數x必填y必填endinput必填shapestartwidthheightoutputoverlay必填overwrite

callout

Add Callouts

Annotate a video with timed boxes, text labels, and arrows. Fallback fonts used are listed in fallbackFonts; characters no font covers are reported in warnings.

輸入參數input必填items必填outputfontFileoverwrite

keystroke_overlay

Keystroke Overlay

Burn keycast-style badges for shortcuts, clicks, and typing from the recording's input event log (start_recording events: true). Never shows typed text: the log has none.

輸入參數keyssizecolorinput必填clicksdryRuneventsoutputtypingfontFilepositionlingerSec另有 1 個

cursor

Re-rendered Cursor

Draw a smoothed, scaled cursor that hides when idle from the event log of a start_recording cursor: "events" recording (no OS cursor in the video), with click ripples and an optional spotlight.

輸入參數sizeinput必填clicksdryRuneventsoutputoverwritesmoothingspotlighthideAfterSec

backdrop

Add Backdrop

Frame a video or screenshot on a gradient, color, or wallpaper with padding, rounded corners, and a drop shadow, optionally on a 16:9/1:1/9:16/4:5 canvas.

輸入參數imageinput必填aspectcolorsoutputpresetradiusshadowpaddingoverwriteshadowOpacity

compress

Compress Video

Re-encode a video smaller (H.264 CRF ladder, optional width cap). For a platform target use export_preset.

輸入參數input必填leveloutputmaxWidthoverwrite

extract_audio

Extract Audio

Extract the audio track of a media file to its own file (mp3, aac, wav, or copy). Returns the output path.

輸入參數input必填format必填outputoverwrite

normalize_audio

Normalize Loudness

Normalize loudness to a delivery target (two-pass EBU R128 loudnorm); video is copied. Reports loudness before and after.

輸入參數input必填outputtargetoverwrite

denoise

Denoise Audio

Reduce steady background noise (fan, hum, hiss) in a recording's audio with an adaptive FFT denoiser. Video is copied untouched. Returns the output path.

輸入參數input必填outputstrengthoverwrite

transcribe

Transcribe Speech

Transcribe a recording's speech to an SRT subtitle file, locally, with FFmpeg 8's whisper filter (needs a whisper.cpp model file). Returns the SRT path and the text. Pair with burn_subtitles to caption the video.

輸入參數input必填modelwordsoutputlanguageoverwrite

burn_subtitles

Burn In Subtitles

Burn SRT/ASS subtitles (e.g. from transcribe) into a video in the bundled font.

輸入參數input必填styleoutputoverwritesubtitles必填

chapters

Chapters

Write chapters (markers, scene changes, transcript, or a list) into an mp4/mkv/mov copy without re-encoding; returns YouTube chapter text. Can mux an SRT as soft subtitles.

輸入參數frominputoutputchapterstextOnlyoverwritesessionIdsubtitlestranscriptminChapterSecsubtitleLanguage

clip

Extract Clips

Extract several frame-exact segments, each to its own file. For one segment, trim does the same.

輸入參數input必填outputsegments必填overwrite

cut_idle

Cut Idle Stretches

Remove dead air: cut stretches where the screen is frozen (and silent), keeping a short pad. Returns the time saved.

輸入參數input必填dryRunoutputkeepSecuseAudiooverwriteminIdleSec

cut_by_transcript

Cut By Transcript

Edit a video by its transcript: cut quoted text, cue numbers, or fillers. Also writes the re-timed .srt.

輸入參數srt必填input必填dryRunoutputremovefillersoverwrite

redact_region

Redact Regions

Cover given rectangles in a video (e.g. secrets on screen). Not automatic detection: find them with find_text redact: true. Off-frame regions are rejected.

輸入參數padcolorinput必填styleoutputregions必填overwrite

list_audio_devices

List Audio Devices

List DirectShow audio devices and flag a likely loopback (Stereo Mix or a virtual-audio driver), for start_recording's audio.device.

無需輸入參數。

list_video_devices

List Video Devices

List DirectShow cameras for start_recording's webcam.device.

無需輸入參數。

list_targets

List Capture Targets

List the desktop, monitors, and visible windows (topmost first, with capturability per backend). Each entry has a `target` string to pass as-is to capture tools; use it instead of guessing a title.

輸入參數exetitleContainscapturableOnly

doctor

Check Setup

Check the setup: ffmpeg/ffprobe (FFmpeg 8+?), optional filters, capture devices, Windows OCR, settings, and enabled toolsets; `problems` says what is missing and how to fix it. Call on first use or when a tool reports a missing feature.

無需輸入參數。

xfade_transition

Crossfade Transition

Join two videos with an xfade transition (audio crossfaded); they need not match in size, fps, or audio. For more clips use assemble_highlights.

輸入參數inputA必填inputB必填outputdurationoverwritetransition

assemble_highlights

Assemble Highlights

Stitch clips (including title cards) into one video with cuts or xfade transitions; they need not match in size, fps, or audio.

輸入參數fpsclips必填widthheightoutputdurationoverwritetransition

title_card

Title Card

Generate a title card clip (centered text on a solid background, silent audio track) to stitch in with assemble_highlights. Uncoverable characters are reported in warnings.

輸入參數bgfpsboldtext必填widthheightoutputdurationfontFilefontSizefontColoroverwrite

music_bed

Add Music Bed

Lay music under a video: looped or trimmed to length, faded, leveled, and mixed with any existing audio. Video is stream-copied.

輸入參數duckmusic必填video必填fadeInoutputfadeOutoverwritemusicVolume

narrate

Narrate

Offline voiceover with the built-in Windows voices: speaks each line at its time or marker over the audio, plus an SRT.

輸入參數duckratelines必填video必填voiceoutputoverwrite

reframe

Reframe Aspect Ratio

Re-aspect a video to 16:9, 9:16, 1:1, or 4:5 by padding or cropping.

輸入參數fitinput必填aspect必填outputoverwrite

zoom

Zoom and Pan

Smooth animated zoom-and-pan into the action and back out, from keyframes or planned from logged clicks or screen changes.

輸入參數input必填dryRuneventsfollowoutputholdSecmaxZoomkeyframesoverwritetransitionSechighlightColorhighlightClicks

pipeline

Edit Pipeline

Run several edits (trim, crop, scale, speed, cut_idle, redact, callout, keystroke_overlay, cursor, reframe, zoom, backdrop, audio, burn_subtitles, then optionally export_preset or export_gif) in one ffmpeg pass: one re-encode, no intermediate files. Prefer it over chaining edit tools; a recipe does the usual polish in one call.

輸入參數input必填stepsdryRunoutputrecipequalitychaptersoverwrite

export_preset

Export for Platform

Encode a platform-ready H.264 file (aspect, fps, bitrate, faststart) for a named platform.

輸入參數fitinput必填outputplatform必填overwrite

bug_report

Bug Report Package

Package a recording as a paste-ready repro folder: secret-scanned, redacted clip and GIF, contact sheet, steps from the event log, OCR'd errors, environment, report.md for gh issue create --body-file.

輸入參數endgifinputstarttitleactualredactclipSecregionsexpectedmaxBytesmaxFrames另有 6 個

step_guide

Step-by-Step Guide

Turn a recording's event log into a numbered how-to: a ringed screenshot and caption per step, marker headings; Markdown and/or one HTML file. Never includes typed text.

輸入參數ocrinputtitleformatoutputDiroverwritesessionId

版本歷史

5
  1. v0.48.0最新Nov 1, 2026
  2. v0.47.0Oct 29, 2026
  3. v0.38.0Oct 26, 2026
  4. v0.37.0Oct 26, 2026
  5. v0.33.0Oct 25, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。