自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 设置WDA_EXCLUDEFROMCAPTURE 无效的原因

虚拟机环境下,系统版本“支持”不代表底层GPU管线支持。必须确保 vGPU / 驱动能够暴露,才能让OBS走WGC,并使Affinity真正生效。在无法保障WGC的情况下,建议在开始录制前隐藏调节面板或使用降级策略,以保证录制画面中不出现敏感UI。

2025-05-15 17:05:39 99

原创 破解 Qt QProcess 在 Release 模式下的“卡死”之谜

在使用 Qt 的QProcess:通过ffprobe同步获取媒体文件的参数(分辨率、采样率、声道数、码率等)。:逐个文件调用或者,异步重新编码到统一格式。:生成后,调用将中间文件拼接成最终输出。在模式下一切运行正常,但切换到(尤其是打包到生产环境)后,却经常出现程序卡在“开始拼接…”或无法结束,不抛错也不返回的怪异现象。本文将深入剖析其背后的根因,并提供简单可靠的解决方案。

2025-05-12 20:06:34 737

原创 在阿里云 Ubuntu 24.04 上部署 RabbitMQ:一篇实战指南

RabbitMQ 是业界常用的开源消息中间件,支持 AMQP 协议,易于部署、高可用、插件丰富。本文以阿里云 ECS 上运行的 Ubuntu 24.04 LTS 为例,手把手带你完成 RabbitMQ 从仓库配置到运行的全流程,并分享在国内环境下常见的坑与对应解决方案。仓库 502/无效:使用 RabbitMQ 官方 Cloudsmith 签名,避开 Erlang-Solutions 国内网络屏蔽。sources.list 解析错误deb行不要带反斜杠续行,改为单行格式。IPv6 不可达。

2025-05-01 10:53:24 408

原创 深入定制 QSlider——实现精准点击跳转与拖拽区分

默认 QSlider 在点击槽区域时执行页步进,因此需自行计算槽的实际区域(grooveRect),保证滑块中心与点击位置对齐。这可以通过使用 QStyleOptionSlider 获得准确的矩形区域来实现。通过记录鼠标按下的位置和检测移动距离,实现了点击(直接跳转)与拖拽(连续更新)的区分,提升了用户的交互体验。由于直接点击槽区域未设置 sliderDown 状态,导致松开时无法发出 sliderReleased 信号。

2025-04-15 20:29:47 123

原创 OBS SDK 中 ffmpeg_muxer 与 ffmpeg_output 的区别与使用 QSV 编码器的正确方式

特性内部使用直接调用 FFmpeg APIOBS 封装逻辑,复用 FFmpeg muxer编码器支持FFmpeg 原生(如libx264h264_qsvOBS 封装的(如obs_x264obs_qsv11灵活性一般高适合场景快速原型或简单录制高度自定义的录制与推流是否能用obs_qsv11❌ 不支持✅ 支持是否支持接口❌✅在 OBS SDK 的使用中,理解输出类型与编码器的耦合关系非常重要。开发中若选择了错误的输出类型,可能导致编码器加载失败、输出文件为空、甚至程序崩溃。

2025-04-12 20:36:56 238

原创 OBS 中如何设置固定码率(CBR)与可变码率(VBR)?

OBS 简单模式对 VBR 做了封装,可能只显示一个码率输入框。若需精确控制“最大码率”,请切换到高级输出模式,或在代码中通过bitrate显式设置。每个编码器的CBR:设置bitrateVBR:设置bitrate和合理选择码率控制方式,能有效提升视频质量或减少卡顿。

2025-04-07 22:29:57 530

原创 OBS 中不同编码器的预设作用与设置方法详解

编码预设是一组编码参数集合,用来控制编码效率与资源消耗之间的平衡。更快的预设(如 ultrafast):占用更少 CPU/GPU,速度更快,但压缩率较低、画质较差。更慢的预设(如 slow):占用更多资源,速度较慢,但压缩率更高、画质更好。

2025-04-07 22:28:53 410

原创 使用 Qt 和 OBS 工具检测系统硬件编码器支持情况(NVENC、QSV、AMF)

本方案通过 Qt + OBS 工具程序实现了:✅ 异步检测硬件加速能力,不卡 UI✅ 支持多平台:NVIDIA / Intel / AMD✅ 自动优先选择最合适的 H.264 编码器在实际软件中可以作为编码设置初始化逻辑的一部分,为用户选择最优性能方案。如果你想扩展支持 HEVC 或 AV1,只需在的源码中增加对应字段解析即可。

2025-04-07 20:19:59 430

原创 QScrollArea 内部滚动条 QSS 样式失效问题及解决方案

现象:在 UI 设计器中预览 QSS 效果正常,但程序运行时 QScrollArea 内部滚动条样式依旧是默认样式;全局 QSS 能生效,但不希望全局修改。原因QScrollArea 内部滚动条的生成方式导致层级选择器无法精确匹配。平台原生样式可能干扰 QSS 设置。解决方式直接获取 QScrollArea 内部的滚动条对象,并为其单独设置 objectName 和样式。

2025-04-06 21:58:15 338

原创 深入理解 QScrollArea 的 widgetResizable 属性

默认(true):内容区域自动调整为 viewport 大小,适用于自适应显示的场景。设置为 false:允许内容区域尺寸自定义超出 viewport,适合需要滚动浏览大量内容的场景。在设计界面时,根据实际需求选择合适的设置,可以让你的应用既美观又实用。希望这篇博客能帮助你更好地理解和使用 QScrollArea 的属性。

2025-04-06 20:57:21 936

原创 利用 QOpenGLWidget 实现 GPU 加速视频帧绘制

初始化 OpenGL 上下文利用 QOpenGLWidget 创建一个 OpenGL 上下文,设置背景色、视口和正交投影。纹理上传使用 QOpenGLWidget 内置的方法将 QImage 上传为 OpenGL 纹理。Qt 内部会处理格式转换和缓存,避免重复上传相同内容。固定函数管线绘制利用 OpenGL 固定函数管线(glBegin/glEnd)绘制一个覆盖整个窗口的矩形,设置顶点和对应的纹理坐标。GPU 会自动根据当前绑定的纹理及过滤模式完成缩放和采样。释放资源与更新。

2025-03-21 11:08:21 324

原创 Qt 多线程设计:死循环与信号槽的权衡

信号发送:死循环不影响 emit,音频可以通知视频。信号接收:死循环无事件循环,需用设计 2 或状态检查解决。选择依据:实时性选设计 1,同步和扩展性选设计 2。通过将死循环移到 std::thread,结合 QThread 的事件循环,我实现了音频和视频的高效同步。这种设计既满足了实时性,又提供了灵活性,是音视频播放器的推荐方案。

2025-03-20 22:33:06 1123

原创 解决 FFmpeg 处理 H.264 视频时因分辨率对齐导致的崩溃问题

这个“坑”让我深刻认识到视频处理的复杂性,尤其是分辨率对齐对 FFmpeg 工作流的影响。将宽度对齐到 16 的倍数看似微小的改动,却解决了崩溃问题,并让我对 H.264 的编码细节有了更深的理解。如果你也遇到类似问题,不妨检查一下对齐逻辑——16 的倍数可能是你的救星!希望这篇总结对你有所帮助。如果有其他 FFmpeg 相关的坑,欢迎交流!

2025-03-20 09:15:43 268

原创 解决 开发FFMPEG视频播放器右侧白色线问题

右侧白色线问题是 Qt 视频播放器开发中常见的渲染缺陷,通常由缓冲区对齐、未初始化像素或背景处理不当引起。对齐视频帧宽度并初始化缓冲区。在渲染时清除窗口背景。验证图像转换和缩放逻辑。这些方法不仅适用于本文的场景,也可作为通用的调试和优化手段,适用于其他基于 Qt 和 FFmpeg 的视频应用开发。希望这篇文章能帮助遇到类似问题的开发者快速定位并解决问题!

2025-03-18 13:09:10 223

原创 解决 OBS 截图黑屏问题 —— 确保源处于 Active 和 Showing 状态

在 OBS 插件或二次开发中,很多开发者遇到过这样的问题:本文将详细介绍出现黑屏的原因,并分享一种简单有效的解决方案——通过手动激活源来确保 OBS 渲染出有效帧。

2025-03-16 12:31:41 343

原创 修复 VS2019 .RC 文件中文乱码与 UAC 窗口显示问题

rc资源文件中的中文字符串显示为乱码。UAC 提权对话框不显示正确的产品名称和应用图标。本文将详细分析这些问题的原因,并提供解决方案。

2025-03-12 11:25:06 957

原创 如何为初创公司选择合适的代码签名证书:Sectigo、GlobalSign 和 DigiCert 对比与优化策略

短期:选择 Sectigo EV,结合 Beta 版测试和微软审核,快速建立信任。中期:升级到 GlobalSign,平衡成本与效果。长期:投资 DigiCert,确保与大公司竞争无障碍。关键策略:主动提交微软审核是性价比最高的方法,24-48 小时内可解决 SmartScreen 问题,无需依赖大量下载。对于初创公司,Sectigo 是一个经济实用的起点,通过优化策略和微软支持,完全可以达到与 GlobalSign 或 DigiCert 相似的效果。未来随着业务增长,逐步升级证书是明智之举。

2025-03-09 21:09:26 139

原创 申请软著流程 以及 源代码和操作说明格式

申请软著的总体流程是:注册账号 → 填写申请表 → 准备材料 → 提交申请 → 等待审查 → 拿证。所需核心材料包括申请表、身份证明、源代码和说明书。只要按要求准备材料并规范提交,通常都能顺利通过。建议提前在官网查看最新政策,确保流程和材料要求无变化。源代码和软件说明书没有固定的模板文件,但需要满足页眉(软件名称+版本号)、页码(右上角)、页数与行数的基本要求。源代码偏向技术性,需保持代码的可读性;说明书偏向说明性,需涵盖功能与使用细节。

2025-03-09 11:17:16 2026 1

原创 Qt 坐标体系:逻辑坐标与物理坐标的区别与实践

在 Qt 开发中,逻辑坐标(Logical Coordinates)和物理坐标(Physical Coordinates)是两个至关重要的概念,尤其是在多屏幕、高 DPI 场景下,如何正确使用它们直接影响窗口的显示、绘制精度和用户体验。逻辑坐标是 Qt 默认使用的坐标体系,它与设备的分辨率和 DPI 缩放无关。例如,在 200% DPI 缩放的屏幕上,一个 100×100 的逻辑窗口实际上会占据 200×200 的物理像素,但开发者在代码中仍然使用 100×100 的尺寸。的屏幕上,实际显示区域是。

2025-03-05 21:03:46 224

原创 Qt 的 Lambda 捕获局部变量导致 UI 更新异常的分析与解决

引用捕获(&dotCount)导致 Lambda 访问已失效变量,引发 UI 显示异常。使用值捕获(dotCount)+mutable,让变量变成 Lambda 自己的状态,避免生命周期问题。或者使用类成员变量代替局部变量,确保生命周期足够长。mutable只是让 Lambda 允许修改自身的捕获变量,而不会影响原始变量的存储位置。这个问题不仅仅在 Qt 开发中会出现,在 C++ Lambda 使用时都需要特别注意变量的生命周期,合理选择值捕获或引用捕获,才能确保程序的正确运行。

2025-03-02 20:56:28 121

原创 Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用

这种方式能够保证线程安全,因为传递的参数会被复制到事件队列中,即使发送者的局部变量在发送后被销毁,槽函数仍然能接收到一个有效的数据副本。在 Qt 中,信号与槽机制是一种事件驱动的通信方式,用于对象之间的解耦交互。这些局部变量在调用后被销毁,槽函数接收到的仍然是独立的数据副本。在目标对象所属的线程中执行,而不会在当前线程中同步执行。,确保参数被复制到目标线程的事件队列中,避免生命周期问题。的事件队列中,等待该线程的事件循环来处理。,参数会在调用时被复制,封装为一个事件,事件被放入接收者线程的事件队列中,

2025-02-28 22:06:45 487

原创 音频质量常用设置:从低到高的五个等级

音频质量的选择取决于具体的使用场景和需求。今天,我们将常见的音频质量划分为五个等级,从低到高,并介绍它们的适用场景。44.1 kHz 是 CD 音质的标准,足够满足大多数人的听觉需求。这种质量适用于对音质有较高要求的用户,尤其是在高端耳机或音响系统上播放时,细节更丰富,低音更扎实。无损音频的目标是尽可能保留所有声音细节,但它的文件体积也非常大,适合专业应用或音响发烧友。这类音频的高频部分可能会有损失,但仍然适合播放背景音乐或对音质要求不高的场景。如果你的设备支持,并且你对音质有更高要求,建议选择。

2025-02-28 17:55:31 3362

原创 解决 OBS 摄像头源预览与录制冲突问题

方案解决方法适用场景关键优势共用同一个摄像头源预览和录制复用相同的源预览+录制简单场景避免冲突,易于实现OBS 场景共享预览和录制引用同一个需要多个窗口访问摄像头适用于复杂场景在实际应用中,如果只是单个预览窗口 + 录制,直接共用同一个源即可;而如果涉及多个窗口,则推荐使用 OBS 场景嵌套方式,确保多个场景可以共享摄像头源。通过合理的资源管理,我们可以有效解决摄像头源预览与录制冲突的问题,保证流畅的用户体验!

2025-02-27 14:20:03 329

原创 利用 OBS SDK 实现源变换:scale、rot 与 pos 的综合应用

在 OBS 中,每个要显示的源(例如摄像头、图片、窗口捕获等)都会被添加到一个场景中,这个源在场景中的实例就称为“场景项”。场景项不仅包含了源本身的信息,还包含了该源在画布中的位置、缩放、旋转等变换属性。通过调整这些属性,我们可以控制源在最终预览或录制画面中的显示方式。用于设置场景项在 X 轴和 Y 轴方向上的缩放比例。缩放不仅可以用于改变源的大小,还可以实现镜像效果。正值:表示正常的缩放比例。例如 1.0 表示 100% 大小。负值。

2025-02-26 16:54:40 107

原创 解决“error: Tried to call obs_frontend_start_virtualcam with no callbacks!”

开发使用 OBS Studio API 的过程中,遇到了不少挑战,尤其是在使用API 时。通过一段时间的探讨和实验,我们发现一个常见的错误提示:“error: Tried to call obs_frontend_start_virtualcam with no callbacks!” 这表明在调用 OBS 的一些前端 API 之前,必须进行回调类的注册。以下是本次讨论的总结以及如何解决该问题.

2025-02-22 21:55:16 155

原创 Qt QComboBox 下拉列表偏移问题探究:多屏幕与高 DPI 环境下的 bug

如果转换过程中未能正确处理屏幕之间的 DPI 差异,就会导致下拉列表的位置计算出错,从而出现偏移现象。Qt 5.15.2 对于多屏幕和高 DPI 的支持已有改进,但在 QComboBox 下拉列表弹出时,内部对 popup 窗口位置计算的逻辑仍可能存在不足,导致在跨屏时出现位置偏移问题。当用户将窗口拖动到不同 DPI 的屏幕上,点击 QComboBox 弹出下拉列表时,下拉列表的位置与预期不符,出现明显偏移,从而影响用户体验。这种设计虽然保证了下拉列表能够独立显示,但也带来了额外的窗口句柄和坐标计算问题。

2025-02-12 20:59:07 727

原创 获取 Windows 视频时长的正确方式——Windows Shell API 深度解析

在 Qt 开发中,有时需要获取视频文件的时长,最直接的方法是在。的方式,但需要正确初始化 COM、正确绑定。Windows Shell API 使用。等 COM 组件,并需要正确处理。

2025-02-11 20:22:18 459

原创 深入解析 OBS 录制尾部帧缺失问题:软件与硬件编码器的对比及优化策略

OBS 录制尾部视频缺帧的问题主要源于编码与写入过程中缓冲区未能及时刷新。使用软件编码器 libx264 时,由于其编码速度受限,容易在录制停止时丢失最后部分帧数据;而硬件编码器(如 h264_nvenc)利用 GPU 加速,能更快地处理和写入数据,从而大幅降低尾帧缺失的情况。针对这一问题,最佳解决方案是在条件允许时优先采用硬件编码器。如果必须使用 libx264,则需要通过降低编码负荷、调整缓冲设置以及合理规划停止流程来尽量改善这一现象。

2025-02-11 15:01:39 240

原创 Windows 高 DPI 环境下,(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough) 时出现界面缩放突然变小(或变大)的原因

的设计初衷是让 Qt 与系统 DPI 完全一致,以获得最精确的浮点缩放;但在 Windows 下多屏/睡眠唤醒的真实环境中,这常常导致“唤醒后界面突然缩放变化”的问题。如果不希望界面缩放随系统的临时浮动值而变动,可以选择RoundFloorCeil等取整策略(部分保守),或在程序启动前手动设置(相当于“自己做主”告诉 Qt 每个屏幕用什么倍数)。如果你的应用需要在运行时动态跟随系统 DPI(比如拔插显示器后想自动调整),则需要自行监听QScreen的相关信号(如等),然后重新计算并设置新的。

2025-02-07 20:12:56 363

原创 Qt中弹出窗口的实现与鼠标事件处理

为了解决这个问题,我们可以在弹出窗口中安装一个全局事件过滤器,手动检测鼠标点击事件,当点击到窗口外部时,关闭弹出窗口。这样,弹出窗口不会捕获鼠标事件,父窗口的控件可以正常接收鼠标事件,悬停效果也能正常退出。类型的窗口会捕获所有的鼠标事件,导致父窗口中的控件无法正确接收到鼠标事件。的悬停效果无法退出,是因为当弹出窗口显示后,鼠标移动到弹出窗口上,但由于。捕获鼠标事件的问题,又实现了弹出窗口在点击外部时自动关闭的效果。捕获鼠标事件的问题,保证父窗口的控件能够正常接收鼠标事件。

2024-11-06 16:26:22 1363

原创 如何通过事件过滤器为 QToolButton 设置不同状态下的图标

使用事件过滤器来捕捉的鼠标事件,根据不同的事件类型(如鼠标进入、离开、按下、释放)动态更改按钮的图标。事件过滤器允许我们在不修改按钮本身的情况下,拦截和处理特定的事件。通过事件过滤器的方法,可以灵活地为设置不同状态下的图标。这种方法不仅适用于单个按钮,也可以扩展到多个按钮,提升代码的复用性和维护性。关键在于正确捕捉并处理按钮的鼠标事件,根据事件类型动态更改图标,从而实现丰富的用户交互效果。在实际开发中,根据项目的复杂度和需求选择合适的方法。如果只需简单的状态切换,使用样式表可能更为简便;

2024-10-20 14:41:00 470

原创 如何为 QSlider 编写 QSS 样式:详细教程

groove代表滑动条的背景,即用户未滑过的区域,而sub-page代表用户已经滑过的区域。我们可以分别为这两个部分设置样式。/* 滑动条的背景,未划过的区域 */width: 4px;/* 设置滑动条轨道的宽度 *//* 已划过的区域背景 */width: 4px;/* 保持轨道宽度一致 */groove部分设置了未滑过区域的背景颜色为#3EA8FF,这是一种蓝色。sub-page部分表示用户滑过的区域,这里将其设置为浅灰色#EEEEEE,以便区分已经滑过的部分。

2024-10-17 14:37:03 1031

原创 使用 QSS 自定义 QComboBox 样式并移除下拉阴影效果

通过 QSS,可以轻松修改QComboBox的背景颜色、边框、箭头图标、以及下拉列表的项目样式。下面是一个示例 QSS,用于自定义QComboBox的样式。/* QComboBox 主体样式 *//* 左侧内边距 *//* 根据需要调整高度,确保箭头和文字垂直居中 *//* 下拉按钮(箭头)的样式 *//* 总宽度 = 箭头宽度 9px + 右边距 8px + 8px 额外空间 *//* 去除默认边框 *//* 下拉箭头的具体样式 *//* 默认箭头图片 */

2024-10-17 12:59:10 1016

原创 解决 Qt 中提升控件后样式表无法正确应用的问题

paintEvent。

2024-10-12 21:30:28 1012

原创 在 Qt 中实现可拖动的无边框 MainWindow 并设置圆角效果

首先在MainWindow类中添加成员变量,用来记录拖动状态和拖动起始位置:private:// 是否正在拖动// 鼠标按下时的初始位置。

2024-10-11 20:00:58 730

原创 小微企业的税务管理:增值税与企业所得税详解

**一般纳税人**:当企业的年应税销售额超过一定标准时(工业企业500万元,商业企业800万元),企业应被认定为**一般纳税人**,并按照更高的税率(如13%或6%)缴纳增值税。- **小规模纳税人**:小规模纳税人的增值税税率为**3%**,通常按季度进行增值税申报。发票作为企业的**成本和费用**的证明,能够用来计算企业所得税的应纳税所得额,从而降低企业的税负。- **税务合规**:发票是企业税务合规的重要凭证,税务机关会依据发票检查企业的经营支出是否真实合法。

2024-10-09 20:57:29 177

原创 PyCharm 推送到 GitHub 失败:原因、现象和解决方案

在使用 PyCharm 时,如果遇到推送代码到 GitHub 失败的问题,尤其是 HTTPS 连接超时或被重置,可以考虑将远程仓库的 URL 改为 SSH 协议。SSH 协议不仅能够解决网络连接问题,还提供了更安全的身份验证方式,减少了证书验证的麻烦。希望这篇文章能够帮助你解决类似的问题,顺利完成代码的推送。

2024-10-07 21:49:16 3208

原创 深入理解Flask应用中不同模式下的数据库连接池

连接池的重要性:连接池可以提高数据库操作的性能和可靠性。同步模式下的连接池:即使一次只处理一个请求,连接池也可能维护多个连接。Gevent模式下的连接池:需要更大的连接池支持高并发请求。合理配置连接池:根据应用需求和数据库限制,调整连接池大小,优化应用性能。监控和调整:持续监控数据库连接数和应用性能,及时调整配置。

2024-10-06 17:14:39 584

原创 在 Ubuntu ECS 实例上部署高性能安全的 Redis 服务指南

本文将详细介绍如何在 Ubuntu 系统的阿里云 ECS 实例上安装和配置 Redis,分配 2GB 内存,并进行全面的性能优化和安全配置,使其功能接近阿里云的商用 Redis 服务。通过上述步骤,您已成功在 Ubuntu ECS 实例上安装并配置了 Redis,分配了 2GB 内存,并进行了全面的性能和安全优化。虽然无法完全匹配阿里云商用 Redis 的所有高级功能,但通过自主搭建和精细配置,已尽可能接近商用级别的性能和安全性。首先,确保您的系统软件包是最新的,以避免潜在的兼容性问题。

2024-10-05 21:45:13 984

原创 使用 pexports.exe 从 DLL 生成 .lib 文件的详细教程

当我们使用第三方库时,通常需要.lib文件来在编译时链接。如果只有 DLL 而没有.lib文件,可以通过以下方法生成。

2024-10-04 09:59:33 953

pexports.exe

pexports.exe

2024-10-04

Detours x86 与 x64 位编译好的静态库

Detours x86 与 x64 位编译好的静态库

2023-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除