Captura 命令行 `--source` 参数完全指南:六种视频源(desktop / region / screen / none / win / webcam)的用法与底层解析
Captura 命令行--source参数完全指南六种视频源desktop / region / screen / none / win / webcam的用法与底层解析【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/CapturaCaptura 的独立命令行程序captura-cli通过--source参数指定「从哪里采集视频」是start录屏与shot截图两个核心动词共用的关键选项。本文以 Arg-Source.md 为骨架逐条讲解desktop、region、screen:index、none、win:hWnd、webcam六种取值格式与适用场景并结合 ConsoleManager.cs 与 Screna 视频源提供器的ParseCli实现说明每个取值在源码中的校验规则与行为细节帮助你写出准确、可复现的命令行脚本。--source参数的作用范围--source定义在 CommonCmdOptions.cs是start与shot共用的基础选项[Option(source, Default , HelpText Video source)] public string Source { get; set; }两种动词的可选值几乎完全一致动词用途支持的 sourcecaptura-cli start录制视频desktop、region、screen:index、none、win:hWnd、webcamcaptura-cli shot截取屏幕desktop、region、screen:index、win:hWnd唯一的差别是none纯音频录制与webcam仅摄像头只能用于start详见下文各节。shot的完整参数见 Verb-Shot.mdstart的完整参数见 Verb-Start.md。从源码看start与shot都把--source的字符串交给同一个分发函数处理。ConsoleManager.cs 中的HandleVideoSource会遍历所有已注册的IVideoSourceProvider把原始字符串依次传给各自的ParseCli方法第一个返回true的提供器即被选中IVideoSourceProvider HandleVideoSource(CommonCmdOptions CommonOptions) { var provider _videoSourceProviders.FirstOrDefault(M M.ParseCli(CommonOptions.Source)); return provider; }如果没有任何提供器能解析该字符串start会输出Video source not set or invalid并直接退出。各提供器的ParseCli实现集中在 src/Screna/VideoSourceProviders 下抽象基类声明见 VideoSourceProviderBase.cs。desktop整块桌面默认值desktop用于捕获整块桌面是start与shot的默认取值因此显式写出与否效果相同captura-cli start --source desktop captura-cli shot --source desktop文档明确说明这是默认选项「写上它和不写一样」。在源码中FullScreenSourceProvider.cs 的ParseCli负责匹配该字符串未显式指定--source时字符串为空同样会落入默认的全屏捕获路径。适合快速录全屏、截全屏或作为脚本的兜底参数。regionLeft,Top,Width,Height四值矩形区域用逗号分隔的四个整数依次表示Left左、Top上、Width宽、Height高指定一个矩形区域进行采集。start与shot均支持captura-cli shot --source 100,100,300,400上例表示从坐标(100, 100)开始截取宽度300、高度400的区域。命令的解析与矩形构造逻辑在 RegionSourceProvider.cspublic override bool ParseCli(string Arg) { if (!(Arg.ConvertToRectangle() is Rectangle rect)) return false; _regionProvider.SelectedRegion rect.Even(); return true; }其中ConvertToRectangle()负责把L,T,W,H字符串解析为Rectangle对象解析失败即返回false该提供器不认领此参数随后调用的Even()扩展方法对应文档中的关键约束The dimensions of the region must be even. If not, they are decreased by 1 as required.即区域的宽、高必须是偶数这是底层编码/采集对齐的硬性要求。若传入奇数系统不会报错而是自动减 1调整为偶数后再用于采集。例如--source 0,0,301,401实际生效区域为0,0,300,400。实际截取时RegionSourceProvider.Capture 直接调用ScreenShot.Capture(SelectedRegion, IncludeCursor)与全屏截图共用同一套底层实现因此 region 截图与 desktop 截图在输出质量上是一致的。screen:index指定某块显示器当机器连接多块显示器时可用screen:index选择其中一块index为从 0 开始的屏幕索引captura-cli start --source screen:1 captura-cli shot --source screen:1start与shot均支持。索引的获取方式在文档中有明确提示运行captura-cli list查看屏幕列表及其索引list的输出内容详见 Verb-List.md注意只有多于 1 块屏幕时list才会列出 Screens。ScreenSourceProvider.cs 的校验逻辑非常严格public override bool ParseCli(string Arg) { if (!Regex.IsMatch(Arg, ^screen:\d$)) return false; var index int.Parse(Arg.Substring(7)); var screens _platformServices.EnumerateScreens().ToArray(); if (index screens.Length) return false; Set(screens[index]); return true; }两处值得注意参数必须严格匹配screen:加纯数字的格式正则^screen:\d$多余的空格或字符都会导致解析失败索引越界index screens.Length同样返回false最终表现为「Video source not set or invalid」。有趣的是shot的默认--source在无参数时会被设置为screen:1见 ShotCmdOptions.cs 附近的代码结合上述越界保护可知当机器只有一块屏幕且未显式指定 source 时截图会因索引越界而走其他分支——这提醒我们使用shot时最好显式指定--source避免依赖隐式默认值。none纯音频录制仅startnone表示不采集任何视频画面仅适用于captura-cli start用于纯音频录制场景captura-cli start --source none --speaker 0上例即「只录制第一个扬声器输出」--speaker的索引同样从 0 开始-1表示不使用默认即-1。这种模式常被用来录制系统内部声音或配合--mic录制麦克风产物是纯音频文件。none的解析由 NoVideoSourceProvider.cs 完成其配套的 NoVideoItem.cs 提供了「无视频轨道」的采集项。需要提醒的是既然是纯音频录制--source none一般要配合--speaker/--mic使用否则录出来是无声的空文件。win:hWnd按窗口句柄捕获仅shot支持透明窗口win:hWnd以窗口句柄hWnd为参数捕获指定窗口的内容captura-cli start --source win:123456 captura-cli shot --source win:123456用于captura-cli start时文档特别强调该窗口句柄必须出现在captura-cli list的输出中list会列出所有可见窗口及其hWnd见 Verb-List.md 中的「Visible Windows with hWnd」hWnd是 Windows 原生窗口句柄十进制整数可用captura-cli list查询当前可见窗口也可用 Spy 等工具获取。在源码层面窗口捕获对shot有专门的处理路径。ConsoleManager.cs 在截图前先用正则win:\d判断参数格式命中后通过_platformServices.GetWindow拿到窗口对象再调用ScreenShotModel.ScreenShotWindow截取——这条路径支持带透明度的窗口截图如无边框半透明窗口。WindowSourceProviderWindowSourceProvider.cs则负责在start录制模式下认领并解析该参数。webcam仅摄像头画面仅startwebcam表示只捕获摄像头画面只能与captura-cli start搭配不能用于shotcaptura-cli start --source webcam --webcam 0配合参数说明--webcam指定使用哪一路摄像头索引从 0 开始-1表示不使用默认值即-1。该参数定义在 StartCmdOptions.cs可用captura-cli list查看可用摄像头列表输出逻辑见 ConsoleLister.cs列表项从索引 0 开始编号。底层解析在 WebcamSourceProvider.cs匹配规则非常简单直接Arg webcam即参数必须是精确的字符串webcam不支持任何变体。选中后ConsoleManager.HandleWebcamConsoleManager.cs会把对应摄像头设置进WebcamModel源码中甚至保留了一段注释HACK: Sleep to prevent AccessViolationException——切换摄像头后程序会强制休眠 500ms 再继续以避免访问冲突异常这说明在脚本中连续切换摄像头时应留出缓冲时间。选择正确的 source场景对照与验证手段综合以上六种取值可按下表快速决策需求场景source 取值示例适用动词全屏录制/截图desktop--source desktopstart / shot指定屏幕录制/截图screen:index--source screen:0start / shot矩形区域截图/录制L,T,W,H--source 100,100,300,400start / shot指定窗口录制/截图win:hWnd--source win:123456start / shot纯音频录制none--source none --speaker 0仅 start仅摄像头录制webcam--source webcam --webcam 0仅 start无论选择哪种取值都有两条通用的验证与调试手段先list再执行captura-cli list用法见 Verb-List.md会一次性输出版本号、FFmpeg/SharpAvi 可用性、可见窗口及hWnd、多屏幕时的屏幕列表、麦克风、扬声器与摄像头清单。screen:index的索引、win:hWnd的句柄、--mic/--speaker/--webcam的索引都应先从这里确认避免越界导致的Video source not set or invalid留意奇偶与格式约束region 的宽高会被强制修正为偶数screen:必须紧跟纯数字webcam必须原样拼写。任何格式偏差都会让解析器静默拒绝该参数。另外需要注意命令行程序使用独立的 Captura.Console.csproj 工程构建产物为captura-cli.exe与 GUI 版captura.exe见 docs/Cmdline/README.md 的对照表是两套入口。官方文档同时提示命令行支持目前「不是非常稳定」not very stable发现问题时可在仓库提交 issue 反馈。小结--source是 Captura 命令行采集入口最核心的参数之一desktop、region、screen:index、none、win:hWnd、webcam六种取值分别覆盖全屏、区域、多屏、纯音频、单窗口与摄像头六类典型需求。理解每个取值背后对应的ParseCli校验规则region 的偶数修正、screen 的严格正则、webcam 的精确匹配、win 的 list 白名单约束能让你在编写自动化录制脚本时一次性写对参数避免静默失败。更完整的动词用法可继续阅读 Verb-Start.md、Verb-Shot.md 与 Verb-List.md。【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/Captura创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenLayers 10.0 升级指南:ImageTile 新基类、Flat Styles 类型提示移除与破坏性变更迁移

OpenLayers 10.0 升级指南:ImageTile 新基类、Flat Styles 类型提示移除与破坏性变更迁移

前端GIS数据可视化 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 点击查看 免费下载 本指南基于 OpenLayers 官方发布说明 changelog/v10.0.0.md,系统梳理 v10.0 的核心改进:全新的影像瓦…

2026/9/23 17:28:46 阅读更多 →
企业客户关系管理避坑指南:API变更下的重构实战

企业客户关系管理避坑指南:API变更下的重构实战

企业客户关系管理避坑指南:API变更下的重构实战 版本升级后 API 全变了,系统直接瘫痪,这大概是后端开发最崩溃的时刻。 别慌,这不是代码写烂了,而是企业客户关系管理(CRM)底层架构在演进。…

2026/9/23 17:28:46 阅读更多 →
Office 2013 SP1性能避坑指南面试实战

Office 2013 SP1性能避坑指南面试实战

Office 2013 SP1性能避坑指南面试实战 面试被问原理答不上来,往往因为只背了八股文,没在真实项目中踩过坑。 很多开发者对 Office 2013 SP1…

2026/9/23 17:28:46 阅读更多 →

最新新闻

法律适用杂志最佳实践:3大避坑指南助你高效备考

法律适用杂志最佳实践:3大避坑指南助你高效备考

法律适用杂志最佳实践:3大避坑指南助你高效备考 官方文档翻了三遍还是抓不住重点?别慌,很多人卡在《法律适用》杂志的备考上,不是智商问题,是方法不对。我见过太多考生,抱着厚厚的期刊目录死磕,结果在“证书有效期与年审”、“答题技巧与时间分配”、…

2026/9/23 18:03:16 阅读更多 →
WPS表格入门全攻略:从基础操作到HTML转换与打印设置

WPS表格入门全攻略:从基础操作到HTML转换与打印设置

WPS表格这个东西,说难并不难,说简单却有一堆小门道。平时做报表、记账、整理名单、统计成绩,只要摸清楚它的脾气,工作效率能提升一大截。我见过不少朋友每天被它“折磨”——数据录进去格式乱了、打印出来缺列少行、网页上复制过来…

2026/9/23 18:03:16 阅读更多 →
Flutter与OHOS插件桥接崩溃根因及幽灵断点定位方案

Flutter与OHOS插件桥接崩溃根因及幽灵断点定位方案

1. 这不是Flutter问题,也不是OHOS问题——而是跨平台桥接层的“幽灵断点”你刚在华为开发者联盟提交完应用审核,手机上点开自家App,首页加载到一半突然黑屏退出,控制台只留下一行模糊的SIGSEGV;或者更糟——用户反馈里…

2026/9/23 18:03:16 阅读更多 →
搞定74ls164驱动,从入门到精通只需3步

搞定74ls164驱动,从入门到精通只需3步

搞定74ls164驱动,从入门到精通只需3步 配置环境就卡半天?别急,74LS164这种经典移位寄存器,很多工程师一上来就被时钟极性、数据同步搞晕。其实它没那么玄乎,掌握核心时序,从入门到精通只需理清三个关键点。 考点梳理:面试官爱问什么…

2026/9/23 18:03:16 阅读更多 →
Java Web宿舍管理系统环境配置与部署避坑指南

Java Web宿舍管理系统环境配置与部署避坑指南

简介:本资源是一套完整的基于Java Web技术开发的学生宿舍管理系统毕业设计项目,面向计算机专业本科生及Java初学者,解决高校宿舍日常管理中学生信息、寝室分配、缺勤记录等核心业务需求。系统采用B/S架构,划分为学生、系统管理员、…

2026/9/23 18:03:16 阅读更多 →
面试被问中值滤波性能优化?3个技巧让速度提升10倍

面试被问中值滤波性能优化?3个技巧让速度提升10倍

面试被问中值滤波性能优化?3个技巧让速度提升10倍 上周陪一个做嵌入式转后端的朋友模拟面试,面试官刚抛出“中值滤波在百万像素图像处理中卡顿怎么办”,他愣住两秒,开始背教科书定义。结果面试官追问:“你代码里怎么写的?瓶颈在哪?”他哑口无言。这…

2026/9/23 18:02:15 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →