尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Captura 命令行录制实战:`captura-cli start` 参数、编码器与源码级原理全解析

Captura 命令行录制实战:`captura-cli start` 参数、编码器与源码级原理全解析 Captura 命令行录制实战captura-cli start参数、编码器与源码级原理全解析【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/CapturaCaptura 在提供图形界面captura.exe之外还内置了一个独立的命令行程序captura-cli.exe用于完成屏幕、音频、鼠标点击与按键的录制任务。本文以官方文档 docs/Cmdline/Verb-Start.md 为骨架结合仓库源码src/Captura.Console/逐项讲解captura-cli start的全部参数、两种录制模式以及 SharpAvi / Media Foundation / FFmpeg / Stream / Steps 五种编码器用法并给出可验证的源码依据帮助你快速上手脚本化、自动化录制。注意官方文档明确指出 命令行支持尚不稳定使用过程中如遇问题欢迎反馈。命令行程序使用默认设置且不保存设置变更每次运行都会以全新状态执行。一、start命令的两种运行模式start动词负责开始录制其运行方式分为两种对应 ConsoleManager.Loop 的实现模式触发条件行为表现定时录制指定--length录制持续到指定秒数后自动停止并在终端中逐秒回显已录制时长手动停止未指定--length终端持续显示提示信息录制过程中按q退出、按p暂停/恢复从源码看定时模式通过while (elapsed StartOptions.Length) { Thread.Sleep(1000); ... }实现每秒计数手动模式则循环读取按键只有在按下p时才调用_recordingModel.OnPauseExecute()切换暂停状态按q才结束循环并调用_recordingModel.StopRecording()收尾详见 ConsoleManager.cs。值得注意的是手动模式兼容输入重定向场景当标准输入被重定向时如管道或脚本会退化为按行读取单个字符。一个最简的录制命令captura-cli start未指定任何参数时它将使用默认设置开始录制桌面默认视频源并等待你在终端按q结束。二、参数详解start命令的参数由 StartCmdOptions.cs 与继承的 CommonCmdOptions.cs 共同定义解析工作交给 CommandLineParser 库完成入口见 Program.cs。下表为完整参数清单参数说明默认值源码定义处--cursor录制中是否包含鼠标光标不包含CommonCmdOptions.cs--keys是否包含按键Keystrokes显示不包含StartCmdOptions.cs--clicks是否包含鼠标点击显示不包含StartCmdOptions.cs--delay开始录制前的延迟等待毫秒0StartCmdOptions.cs-t/--length录制时长秒0不限制StartCmdOptions.cs--source录制视频源详见 Arg-Source.mddesktop桌面CommonCmdOptions.cs--mic麦克风索引-1 不使用0 第一个设备-1StartCmdOptions.cs--speaker扬声器输出索引-1 不使用0 第一个设备-1StartCmdOptions.cs--webcam摄像头索引-1 不使用0 第一个摄像头-1StartCmdOptions.cs-r/--framerate帧率fps10StartCmdOptions.cs--encoder视频编码器详见下文第三节SharpAvi Motion JPEGStartCmdOptions.cs--vq视频质量1 10070StartCmdOptions.cs--aq音频质量1 10050StartCmdOptions.cs-f/--file输出文件路径按设置自动命名CommonCmdOptions.cs-y覆盖已存在的输出文件不覆盖会交互询问StartCmdOptions.cs--replay回放录制Replay参数为回放时长秒如--replay 20关闭StartCmdOptions.cs源码未在文档表格中列出的额外参数除上述文档列出的参数外StartCmdOptions.cs 还定义了--settings参数用于指定设置文件路径以覆盖叠加层Overlay设置、FFmpeg 路径与输出目录。其执行时会将ServiceProvider.SettingsDir指向该路径见 StartCmdOptions.Run。参数的行为细节源码依据文件已存在时的行为当-f指定的输出文件已存在时若未加-y程序会弹出 Yes/No 询问是否覆盖确认后才删除旧文件见 ConsoleManager.cs。音频索引越界处理--mic/--speaker只有在索引落在设备数组范围内时才会启用对应录音见 HandleAudioSource否则静默忽略。设备列表可通过captura-cli list查询输出实现在 ConsoleLister.cs。--delay的实现源码直接使用Thread.Sleep(StartOptions.Delay)阻塞等待后启动录制见 ConsoleManager.cs。--replay的实现当回放时长大于 0 时会同时把RecorderMode设置为Replay并写入回放时长见 ConsoleManager.cs随后在 RecordingModel.cs 中创建FFmpegReplayWriter完成录制最近 N 秒的环形缓冲逻辑。因此回放模式依赖 FFmpeg 可用。设置继承命令行模式并非完全空白ConsoleManager.CopySettings()会从 GUI 设置中拷贝鼠标指针叠加、点击/按键显示、耗时显示、输出目录、FFmpeg 路径、遮挡与文字/图片叠加层等配置见 ConsoleManager.cs。三、视频源--source速览--source的取值规则在 Arg-Source.md 中有完整说明此处仅做速览完整内容请阅读原文档取值含义适用命令desktop整个桌面默认start / shotLeft,Top,Width,Height指定区域宽高必须为偶数否则自动减 1 校正start / shotscreen:index按索引选屏幕0 起start / shotnone无视频仅音频录制仅 startwin:hWnd按窗口句柄录制必须来自list输出start / shotwebcam仅录制摄像头画面配合--webcam选设备仅 start示例录制指定区域100,100,300,400的命令在 StartCmdOptions.Examples 中有对应用法示例区域解析在 RegionSourceProvider.ParseCli 中完成并对坐标调用Even()做偶数化处理。none与webcam的匹配逻辑分别位于 NoVideoSourceProvider.cs 与 WebcamSourceProvider.cs。四、编码器--encoder详解未指定--encoder时默认使用SharpAvi Motion JPEG编码器对应 HandleVideoEncoder 的兜底分支。--encoder支持以下五类取值1. SharpAvisharpavi:indexindex是零基索引标识具体的 SharpAvi 编码器。可用captura-cli list查看编码器索引列表输出逻辑见 ConsoleLister.SharpAvi。captura-cli start --encoder sharpavi:0SharpAvi 模式不依赖 FFmpeg是最轻量的录制方案。测试 ConsoleStartTests.cs 验证了start --encoder sharpavi:0可正常启动并通过按键q正常退出。2. Media Foundationmf使用 Windows Media Foundation 编码基于Captura.Windows/MediaFoundation模块参数直接写mfcaptura-cli start --encoder mf3. FFmpegffmpeg:indexindex是零基索引对应 FFmpeg 编码器列表。该模式要求 FFmpeg 已安装否则解析会失败FFmpegWriterProvider.ParseCli 首先检查FFmpegService.FFmpegExists。可用captura-cli list查看编码器索引。captura-cli start --encoder ffmpeg:0从 FFmpegWriterProvider.GetEnumerator 看内置编码器顺序为X264 → Xvid → QSV HEVC → NVENC H.264 → NVENC HEVC随后是用户自定义编码器FFmpegSettings.CustomCodecs索引即按此顺序编号。FFmpeg 未就绪时可通过captura-cli ffmpeg命令在线安装见 Verb-FFmpeg.md。4. Stream直播推流stream:urlurl为流媒体服务的 RTMP 地址将录制内容实时推流captura-cli start --encoder stream:rtmp://live.twitch.tv/app/TWITCH_KEY该模式同样依赖 FFmpeg其编码器集合Twitch、YouTube Live、自定义流媒体定义在 StreamingWriterProvider.GetEnumerator。注意官方将其标记为 Alpha 阶段功能API Key 可在 FFmpeg 设置页中配置见 StreamingWriterProvider.Description。5. Steps步骤录制模式steps:video与steps:imagesSteps 模式用于录制操作步骤即鼠标/键盘操作序列与普通视频录制不同# 将步骤录制为 AVI 视频 captura-cli start --encoder steps:video # 将步骤录制为包含 PNG 图片的文件夹 captura-cli start --encoder steps:images其实现位于 HandleVideoEncodersteps:video会创建StepsVideoWriterItem基于 SharpAvisteps:images则创建ImageFolderWriterItem两者都会将RecorderMode切换为Steps随后在 RecordingModel.SetupStepsRecorder 中组装StepsRecorder记录按键KeyStep、鼠标点击MouseClickStep与滚动ScrollStep等步骤事件。五、实战示例示例 1录制 10 秒包含光标、按键与第一个扬声器的声音这是文档给出的官方示例也是 StartCmdOptions.Examples 中注册的标准用法captura-cli start --length 10 --cursor --keys --speaker0示例 2指定区域录制为 AVI 文件并覆盖旧文件captura-cli start --source 100,100,300,400 --encoder sharpavi:0 -f out.avi -y示例 3仅录制系统声音无视频源captura-cli start --source none --speaker 0示例 4麦克风 扬声器同时录制自定义质量captura-cli start --source desktop --mic 0 --speaker 0 --vq 80 --aq 60 --framerate 30 -f demo.mp4提示多显示器环境下可用screen:index选择屏幕录制特定窗口时先用captura-cli list获取窗口的hWnd再以--source win:hWnd传入。六、注意事项与边界条件命令行列出的设备/编码器索引以captura-cli list实际输出为准Verb-List.md索引从 0 开始越界的音频/摄像头索引会被静默忽略。--replay、ffmpeg:index、stream:url、steps:*均与 FFmpeg 或特定模块强相关请先通过captura-cli list确认 FFmpeg 是否可用输出首行即为FFmpeg Available: YES/NO见 ConsoleLister.cs。命令行程序是独立于 WPF 主程序的单独工程Captura.Console.csproj文档 docs/Cmdline/README.md 解释了单独设计的原因WPF 应用无法阻塞控制台、无法默认写入控制台等问题因此录制等待逻辑放在命令行程序内部完成。手动停止模式下暂停/退出按键为p/q若通过管道重定向输入则按行读取单字符输入见 ConsoleManager.Loop。若未指定-f输出文件将根据设置中的文件名格式自动生成RecordingModel.StartRecording 调用Settings.GetFileName如需精确控制输出路径请显式使用-f。七、结语captura-cli start提供了从定时录屏到直播推流的完整命令行能力两个参数即可完成带光标、按键与音频的定时录制通过--encoder可在 SharpAvi、Media Foundation、FFmpeg 与直播流之间自由切换steps:*更是将步骤录制按键/点击/滚动带入脚本化场景。结合captura-cli list查询设备索引、captura-cli ffmpeg管理 FFmpeg 安装即可将 Captura 的录制能力无缝接入批处理脚本与自动化流水线。若需了解其他命令动词list、shot、ffmpeg或--source的完整规则可继续阅读 docs/Cmdline/README.md、Verb-List.md、Verb-Shot.md 与 Arg-Source.md。【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/Captura创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表