Captura v8.0.0 版本深度解析:区域选择器、FFmpeg 编码、图像编辑与多音频源等 80 项新特性全梳理
桌面应用屏幕录制音视频【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址https://gitcode.com/gh_mirrors/ca/Captura点击查看免费下载导读v8.0.0 是 Captura开源屏幕录制与截图工具的一个重要功能迭代版本围绕录制交互体验与后期处理能力两大主线引入了区域选择器增强Record/截图按钮、基础绘图、录制中实时预览、多路音频同时录制与录制中切换音频源、独立热键管理窗口、内置图像编辑器/裁剪器、音视频裁剪器、FFmpeg 输出尺寸缩放等能力。本文以官方更新日志为骨架结合仓库源码src/Captura.FFmpeg、src/Captura.Core、src/Captura.Hotkeys等逐条解读各特性的实现原理与使用方式帮助开发者和使用者理解该版本的真实能力边界。一、音频 / 视频源Audio / Video Sources的交互重构v8.0.0 对录制源的交互方式做了大量修正与增强是本次更新中改动最密集的部分。官方日志指出该版本更新日志本身并不完整 This changelog is incomplete.因此以下条目仅代表可确认的核心变更。1.1 区域选择器Region Selector的可用性修复更新日志修复了两处直接影响操作体验的缺陷修复移动区域选择器后鼠标光标位置错误——该问题影响的是区域选择器拖动后鼠标指针与实际捕获区域的偏移修复后重新拾取光标位置确保选区与指针一致修复停止录制后无法调整区域选择器尺寸——停止录制后选区仍应保持可拖动、可缩放状态该修复保证了停止 → 调整 → 再次录制的连续工作流。同时v8.0.0 为区域选择器本身新增了Record录制与 ScreenShot截图两个按钮用户无需离开选区即可一键开始录制或抓图还新增了区域选择器内的基础绘图支持Basic drawing support可在选区上直接绘制标注。此外隐藏窗口Hide when Recording现在可以直接在区域选择器上配置且刷新Refresh操作会保留当前已选中的音频/视频源、编码器与摄像头设置避免重新选择。1.2 桌面复制Desktop Duplication与可变帧率 GIF桌面复制支持可变帧率 GIFDeskDuplImageProvider所在路径src/Captura.Windows/DesktopDuplication负责通过 Windows Desktop Duplication API 抓取全屏内容v8.0.0 使其可配合可变帧率 GIF 输出修复进入不可录制模式如登录屏 Sign-in screen时不再崩溃当屏幕切换为安全桌面或登录界面等无法捕获的状态时录制器不再直接崩溃而是进入可恢复的安全状态。1.3 多路音频源同时录制与录制中切换v8.0.0 将音频录制能力从最多两路提升为可同时录制多于 2 个音频源并支持录制过程中动态切换音频源在音频Audio标题旁新增复选框用于决定当前会话是否录制音频。这一能力的实现与音频捕获管线相关音频源经由 Captura.NAudioNAudio/WASAPI或 BASS 提供具体多源混合逻辑可参考 MixedAudioProvider.cs。1.4 窗口与屏幕选择器Window picker / Screen picker新增Window picker 与 Screen picker在开始录制或截图时系统会弹出选择器让用户挑选目标窗口或屏幕而不是默认全屏。对应实现可见 ScreenPickerViewModel.cs 与 VideoSourcePicker.cs。1.5 其他音频相关修复缺少 bass.dll / bassmix.dll 时显示错误消息BASS 音频后端缺失动态库时会明确提示而非静默失败停止窗口捕获后自动停止当被捕获的窗口被关闭时录制自动停止Stop Window capture when Window is closed。二、录制中预览Preview与全屏预览v8.0.0 新增录制过程中实时预览Preview while recording选项并支持全屏预览视图。预览窗口通过IPreviewWindow服务实现接口定义见 IPreviewWindow.csFakes 测试桩见 FakePreviewWindow.cs。从源码结构看丢弃写入器DiscardWriter在后续版本v9.0.0被重命名为 Preview Only 并自动显示预览窗口说明预览功能正是建立在不落盘、仅显示的写入器之上DiscardWriter.cs 的WriteFrame仅释放帧Image.Dispose()不写入任何文件而其配套 DiscardWriterItem.cs 注入了IPreviewWindow用于将帧送入预览界面。用户可在配置 → 附加Config | Extras中启用实时回放已录制音频playback recorded audio in real-time。三、叠加层Overlays的独立配置窗口v8.0.0 将叠加层配置从主界面迁移到独立的配置窗口核心变化包括叠加层可通过在背景上拖拽方框dragging boxes over a Background来定位所见即所得地摆放各叠加层的位置左键与右键鼠标点击叠加层使用独立颜色MouseOverlaySettings中为左/中/右键分别配置颜色相关逻辑见 MouseOverlaySettings.cs 与叠加层实现 MouseClickOverlay.cs支持自定义图片叠加层Custom image overlaysCustomImageOverlay允许将任意图片叠加到录制画面上设置模型见 CustomImageOverlaySettings.csUI 中的叠加层自定义会同步作用于 Console 命令行录制Overlay customization from UI is used in Console新增鼠标指针叠加层Mouse Pointer Overlay便于在录制画面中追踪鼠标位置新增极简鼠标点击动画minimal mouse click animation配合点击叠加层使用已录制时长Elapsed从文本叠加层中独立出来可在主界面单独开关——ElapsedOverlay独立实现见 ElapsedOverlay.cs。四、FFmpeg 编码与日志体系升级4.1 输出视频尺寸缩放Resize新增选项可缩放 FFmpeg 输出视频尺寸。实现位于 FFmpegVideoWriter.cs当settings.Resize为真时会通过vf滤镜生成scalewidth:height参数代码还会自动将奇数宽/高修正为偶数if (width % 2 1) width;以满足 H.264 等编码器对偶数尺寸的要求。默认缩放尺寸为 640×480可在 FFMpegSettings.cs 中看到ResizeWidth/ResizeHeight的默认值。4.2 FFmpeg 日志多文件维护与一键复制FFmpeg 日志维护多条记录multiple logs不再只保留最后一次运行日志可回溯历史FFmpeg 日志可将完整输出复制到剪贴板便于在社区或 Issue 中粘贴完整日志排查问题。相关模型见 FFMpegLogItem.cs 与日志仓储接口 IFFmpegLogRepository.cs。4.3 多个自定义 FFmpeg 编码器支持同时定义多个自定义 FFmpeg 编码器Multiple Custom FFmpeg Codecs而非此前单一的 CustomCodec。FFmpegSettings.CustomCodecs是ObservableCollectionFFmpegCodecSettingsFFMpegSettings.cs对应编码器类 CustomFFmpegVideoCodec.cs。4.4 增大 thread_queue_size 与异步写帧保证thread_queue_size由默认值提升至 512在 FFmpegVideoWriter.cs 与音频输入管道同文件 L85中均设置了AddArg(thread_queue_size, 512)用于降低高帧率/高分辨率下输入管道丢包导致的编码卡顿异步写入时确保上一帧已写入Ensure previous frame is written when writing asynchronouslyWriteFrame通过_lastFrameTask串联异步写入链_lastFrameTask.ContinueWith(...)并在Dispose时_lastFrameTask?.Wait()等待所有帧落盘后再退出FFmpegVideoWriter.cs避免录制结束时帧丢失。五、独立热键管理窗口Hotkey Windowv8.0.0 新增独立窗口管理全局热键支持新增、删除、编辑动作与按键组合。核心实现位于 Captura.Hotkeys 模块HotKeyManager.cs提供Add()、Remove()、RegisterAll()、Reset()等管理方法并可通过AllServices枚举全部可绑定的服务ServiceNameHotKey.cs封装单个热键的注册Register、注销Unregister与按键修改ChangeHotkeyModel.cs承载ServiceName / Key / Modifiers / IsActive的可序列化数据模型。界面对应 HotkeysPage.xaml视图模型见 HotkeysViewModel.cs。热键通过RegisterHotKey见 Kernel32.cs注册为系统级全局热键即使 Captura 不在前台也可触发。六、图像编辑器Image Editor与编辑器截图目标v8.0.0 内置了极简图像编辑器minimal image editor并新增截图目标Editor截图保存后直接送入图像编辑器进行二次加工。实现链路截图目标EditorWriterEditorWriter.csSave方法先保存图片若文件不存在再调用IMainWindow.EditImage(FileName)打开编辑器IMainWindow.EditImage接口定义于 IMainWindow.cs具体实现见 MainWindowProvider.cs截图气泡ScreenShotBalloon同样提供编辑入口ScreenShotBalloon.xaml.cs。用户在设置 → 截图中勾选Editor作为保存位置之一即可让每张截图自动进入编辑器绘制标注后再保存。七、图像裁剪器Image Cropper新增**裁剪图像crop images**选项允许在保存截图前对画面进行裁剪。裁剪界面位于 CroppingAdorner.cs基于 WPF Adorner 的裁剪框交互实现配合 ScreenShotModel.cs 的截图处理流程使用。与之配套的还有叠加层定位用的 OverlayPositionAdorner.cs两者共用拖拽框交互模式。八、音视频裁剪器Audio / Video Trimmer新增裁剪音频与视频功能Trim用户可选择时间起点与终点将源文件裁剪为新的输出文件。实现位于 FFmpegTrimmer.cs其Run方法接受SourceFile / From / To / DestFile / HasAudio参数通过 FFmpegArgsBuilder 生成参数输入文件追加-ss From与-to ToAddArg(ss, From)/AddArg(to, To)若源含音频则设置-c:a copy直接复制音频流SetAudioCodec(copy)避免重编码损耗随后启动 FFmpeg 进程并等待退出退出码非 0 时抛出FFmpegException。界面与视图模型见 TrimmerWindow.xaml 与 TrimmerViewModel.cs。九、新增翻译与翻译辅助窗口v8.0.0 新增三种语言翻译日语Japaneseja.json简体中文Chinese Simplifiedzh-CN.json繁体中文Chinese Traditionalzh-TW.json并新增翻译者窗口Translator window可从关于About选项卡打开辅助翻译者对照原文逐条翻译。本地化框架见 Captura.LocLanguageManager、LanguageFields等翻译语言文件统一存放于 src/Captura.Loc/Languages。十、其他重要变更Other10.1 命令行Console相关修复与增强修复captura shot全屏截图失败——ConsoleStartTests.csTests覆盖了命令行启动路径修复命令行录制时鼠标光标移动缓慢——涉及光标捕获管线MouseCursor.cs命令行支持摄像头捕获Webcam capture support from Command-line——Webcam 模型见 WebcamModel.cs 与 WebcamSourceProvider.cs。10.2 时间与时长设置时长Duration在开始延迟Start Delay结束之后才开始计时即延迟期间不计入录制时长Duration 与 Start Delay 会持久化到设置中对应 TimerModel.cs 的定时逻辑。10.3 系统集成与代理新增使用系统代理System Proxy的选项对应 ProxySettings.cs 与 ProxySettingsViewModel.cs启动时最小化到系统托盘Minimize to System Tray on Startup与关闭时最小化到托盘Minimize to System Tray when Closed两个独立选项托盘实现见 SystemTray.cs修复高 DPI 下主窗口摄像头预览位置错误——涉及 DPI 缩放处理Dpi.cs。10.4 录制稳定性保护日志中特别说明当帧写入停滞时自动停止录制Stop Recorder when Frames are not being written。这发生在帧率过高或编码器过慢时系统会检测待写入帧数量若超过最大值则判定写帧跟不上主动停止录制以防止 100% 内存占用导致系统卡死。这也是 v9.0.0 中错误消息System cant keep up with the Recording. Frames are not being written...的前身。相关帧率管理见 FpsManager.cs。10.5 界面与信息展示通知堆栈Notification Stack多条通知以堆栈形式排列展示见 NotificationStack.xaml新增异常对话框Exception Dialog异常时弹出可复现的对话框见 ExceptionWindow.xaml 与 ExceptionViewModel.cs在窗口中展示许可证Display Licenses in a Window见 LicensesPage.xaml 与 LicensesViewModel.cs多个可选截图保存位置Multiple selectable Screenshot Save Locations截图可同时写入多个目标磁盘/剪贴板/上传/编辑器等对应 src/Captura.Core/Models/ImageWriterItems 下各类写入器支持从 Imgur 删除已上传的图片Imgur 上传器见 ImgurUploader.cs。十一、如何获取与验证 v8.0.0源码本仓库即 Captura 的完整源码镜像入口解决方案为 src/Captura.sln各模块按功能拆分Captura.Windows、Captura.FFmpeg、Captura.Core、Captura.NAudio等构建说明见 docs/Build.md 与 docs/Cake.md基于 Cake 的自动化构建命令行用法v8.0.0 增强的命令行能力captura shot、摄像头录制等可参考 docs/Cmdline 下的动词文档Verb-Shot.md、Verb-Start.md、Verb-List.md 等与 CmdOptions 中的命令行参数模型版本演进v8.0.0 之后的功能走向如 FFmpeg GIF 编码器替代、YouTube 上传、%CAPTURA_PATH%便携路径等可参考 docs/Changelogs/v9.0.0.md。结语v8.0.0 是 Captura 从能录屏走向录制体验完备、后期能力自洽的关键版本区域选择器交互修复、多音频源录制、录制中预览与叠加层可视化配置构成了录制端的高效工作流而图像编辑器/裁剪器、音视频裁剪器与 FFmpeg 日志体系则补齐了截图与录制的后期处理短板。对于希望理解 Captura 架构或定制录制流程的开发者围绕 FFmpegVideoWriter.cs、HotKeyManager.cs、EditorWriter.cs 与 FFmpegTrimmer.cs 四份源码即可快速掌握本版本的核心脉络。赞分享桌面应用屏幕录制音视频【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址https://gitcode.com/gh_mirrors/ca/Captura点击查看免费下载相关推荐Flameshot 12.0 发布说明深度解读图层移动、选区放大镜与区域记忆等新特性源码剖析Flameshot 12.0 发布说明深度解读图层移动、选区放大镜与区域记忆等新特性源码剖析 导读 本文以 docs/ReleaseNotes_12.0.md桌面应用截图ByteMD v1.22.0 版本深度解析现代化的Markdown编辑器新特性ByteMD v1.22.0 版本深度解析现代化的Markdown编辑器新特性 ByteMD是一个基于Svelte构建的现代化Markdown编辑器组件它提前端UI组件富文本为什么选择poppler-windows对比同类PDF工具的6大优势为什么选择poppler windows对比同类PDF工具的6大优势 在Windows平台上处理PDF文件时选择合适的工具至关重要。 poppler win开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考