ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Captura 命令行 `list` 命令完全指南:一次枚举编码器、屏幕、窗口与音频设备

Captura 命令行 `list` 命令完全指南:一次枚举编码器、屏幕、窗口与音频设备 Captura 命令行list命令完全指南一次枚举编码器、屏幕、窗口与音频设备【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/Capturacaptura list是 Captura 命令行工具captura-cli.exe内置的“环境侦察”命令用于在录制开始前快速盘点当前机器的录制能力FFmpeg 与 SharpAvi 是否可用、各自支持哪些编码器、当前可见窗口含 hWnd、屏幕、麦克风、扬声器输出源与网络摄像头等。读完本文你将掌握该命令的完整输出语义、底层数据来源与典型实战用法并能借助其输出为后续start、shot等录制指令挑选正确的设备与编码器索引。一、命令定位CLI 工具链中的“侦察兵”Captura 项目同时提供两个可执行文件GUI 版本captura.exe与命令行版本captura-cli.exe二者均由 CommandLineParser NuGet 包解析参数参见 docs/Cmdline/README.md。命令行版本采用独立的控制台宿主其内置动词Verb包括list列出可用的屏幕、窗口、音频源、网络摄像头、编码器等本文主题start开始录制shot截取屏幕截图ffmpeg从命令行安装 ffmpeghelp/version帮助与版本信息。从源码结构看这些动词通过 VerbsModule 统一注册到ICmdlineVerb绑定中list对应的实现类为 ListCmdOptions其HelpText为 “Display available video sources, encoders, audio sources, etc.”与官方文档的描述完全一致。二、基本用法与执行入口在命令行中直接运行captura list可执行文件名为captura-cli.exe时同理即captura-cli list。命令执行链路如下Program.cs 的Main首先调用User32.SetProcessDPIAware()保证输出内容的 DPI 一致性依次加载CoreModule、FakesModule、VerbsModule三个模块通过ServiceProvider.LoadModule完成依赖注入装配Parser.Default.ParseArguments(Args, verbTypes)解析参数命中list动词后先打印版本横幅Banner()再执行ListCmdOptions.Run()Run()从容器中取出ConsoleLister并调用其List()方法见 ListCmdOptions.cs。其中横幅输出格式为Captura v{版本号}版本号取程序集版本的前三段并附注版权年份源码见 Program.cs。需要特别说明命令行版本“使用默认设置、不保存任何设置”因此list输出的环境信息均基于当前机器运行时状态实时采集而非历史配置文件。三、输出内容逐项详解依据官方文档 docs/Cmdline/Verb-List.mdlist命令会显示以下信息。下表为文档承诺的输出项右侧为对应的底层实现来源输出项官方文档描述源码实现来源版本VersionProgram.cs 的Banner()FFmpeg 可用性If FFmpeg is availableConsoleLister.cs →FFmpegService.FFmpegExistsFFmpeg 编码器FFmpeg encodersFFmpegWriterProvider枚举SharpAvi 可用性If SharpAvi is available检测SharpAvi.dll是否存在SharpAvi 编码器SharpAvi encodersSharpAviWriterProvider枚举可见窗口含 hWndVisible Windows with hWndIPlatformServices.EnumerateWindows()屏幕ScreensIPlatformServices.EnumerateScreens()麦克风Available MicrophonesIAudioSource.Microphones扬声器输出源Available Speaker output sourcesIAudioSource.Speakers网络摄像头Available WebcamsWebcamModel.AvailableCams文档未在列表中单独列出但源码会输出说明官方文档还列出了“If MouseKeyHook is available”一项但当前仓库中 ConsoleLister.cs 的实现并未输出该项这属于文档与源码的版本差异读者应以实际运行输出为准。3.1 FFmpeg 可用性与编码器列表ConsoleLister首先调用FFmpeg()输出FFmpeg Available: YES/NO。其判定逻辑见 FFmpegService.cs依次检查 FFmpeg 设置中配置的目录、程序所在目录/库目录最后尝试在 PATH 中启动ffmpeg.exe -version任何一步成功即判定为可用。若 FFmpeg 可用随后打印FFmpeg ENCODERS列表。编码器来自 FFmpegWriterProvider.cs 的枚举顺序X264软件编码Xvid软件编码QSV HEVCIntel 硬件编码NVENC H.264NVIDIA 硬件编码NVENC HEVCNVIDIA 硬件编码之后追加用户在设置中自定义的编码器CustomCodecs注意硬件编码器QSV/NVENC会始终列在枚举器中但能否真正工作取决于显卡驱动是否支持list只负责展示候选列表。3.2 SharpAvi 可用性与编码器列表接着输出SharpAvi Available: YES/NO。判定方式是检查SharpAvi.dll是否存在ServiceProvider.FileExists(SharpAvi.dll)见 ConsoleLister.cs。若可用SharpAvi ENCODERS列表来自 SharpAviWriterProvider.cs固定包含Motion JPEG使用 WPF 的 JPG 编码器Uncompressed AVI未压缩 AVILagarith需手动安装 Lagarith 编解码器并配置为 RGB 模式、关闭 Null Frames之后追加系统已安装的全部 VCM MPEG-4 编码器Mpeg4VideoEncoderVcm.GetAvailableCodecs()因此实际数量取决于机器上安装了哪些视频压缩组件。3.3 可见窗口列表含 hWndAVAILABLE WINDOWS部分遍历IPlatformServices.EnumerateWindows()逐行输出窗口句柄与标题句柄左对齐占 10 个字符宽度{hWnd.PadRight(10)}: {窗口标题}窗口枚举接口定义于 IPlatformServices.cs其中EnumerateWindows()返回可见窗口EnumerateAllWindows()返回全部窗口从 ConsoleLister.cs 的注释“Window Picker is skipped automatically”可以推断输出时已自动跳过用于窗口选择的辅助窗口。hWnd 是 Windows 窗口句柄在后续start命令中可用作“按窗口录制”的定位依据。3.4 屏幕列表AVAILABLE SCREENS部分遍历EnumerateScreens()并输出序号: 设备名如\\.\DISPLAY1。文档描述为“Screens if there are more than 1”但当前源码实现中无论数量多少都会打印该区块见 ConsoleLister.cs。同时从IPlatformServices接口可看到屏幕相关能力还包含DesktopRectangle、GetScreenProvider等说明屏幕枚举结果是截图与录制目标选择的基础数据。3.5 音频设备麦克风与扬声器输出源音频部分先输出当前音频源名称Audio Source: {Name}再分别打印AVAILABLE MICROPHONES与AVAILABLE SPEAKER SOURCES两者均以序号: 设备名形式呈现见 ConsoleLister.cs。数据来自 IAudioSource.cs 接口的Microphones与Speakers属性这两个集合与DefaultMicrophone、DefaultSpeaker一起构成了录音/混音设备的完整视图。3.6 网络摄像头最后若检测到的摄像头数量大于 1则输出AVAILABLE WEBCAMS列表。源码中WebcamModel.AvailableCams的索引 0 固定为NoWebcamItem.Instance“无摄像头”占位项因此实际输出从索引 1 开始、序号重新从 0 编号见 ConsoleLister.cs 与 WebcamModel.cs。四、输出格式约定ConsoleLister统一使用 30 个连字符-作为各区块的分隔下划线编号统一右对齐并补齐宽度保证输出对齐可读区块标题格式区块名\n------------------------------30 个连字符索引编号使用PadRight(2)如麦克风、扬声器、编码器、摄像头或PadRight(10)如窗口 hWnd每个区块结束后输出一个空行便于人工阅读与脚本解析。对于条件性输出如 SharpAvi/FFmpeg 不可用时跳过编码器列表、摄像头少于 2 个时不输出摄像头区块逻辑均在 ConsoleLister.cs 的对应方法中以if守卫实现可作为编写解析脚本时的边界条件参考。五、实战应用用 list 输出指导录制参数list最大的实战价值在于为start/shot动词提供索引依据。从 FFmpegWriterProvider.cs 与 SharpAviWriterProvider.cs 的ParseCli方法可以看到命令行支持ffmpeg:序号与sharpavi:序号两种编码器引用语法序号正是list输出中的索引captura start -v ffmpeg:0 # 使用列表中的第 0 个 FFmpeg 编码器X264 captura start -v sharpavi:1 # 使用 SharpAvi 第 1 项未压缩 AVI同理窗口 hWnd、屏幕序号、麦克风/扬声器序号也与start、shot的参数体系一一对应。推荐的排查流程是先运行captura list确认 FFmpeg 是否可用、确认要录制的窗口/屏幕/音频设备在列表中的序号再据此构造录制命令从而避免因设备名拼写或编码器不可用导致的失败。关于start的完整参数说明可继续阅读 docs/Cmdline/Verb-Start.mdlist在动词列表中的定位见 docs/Cmdline/README.md。六、注意事项与限制命令行支持官方标注为“not very stable”遇到 bug 应反馈给项目维护者见 docs/Cmdline/README.md 的说明命令行版本不保存设置list输出完全反映运行时刻的机器状态若中途插拔摄像头、安装新编码器需要重新运行以获得最新列表硬件编码器QSV/NVENC是否真正可用还取决于驱动Lagarith 等第三方编码器需要单独安装文档与当前源码存在少量差异如 MouseKeyHook 可用性输出项、屏幕区块的显示条件脚本解析时应以实际输出为准并留意版本升级带来的格式变化。【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址: https://gitcode.com/gh_mirrors/ca/Captura创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表