自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

luoyayun361的专栏

GitHub地址:github.com/luoyayun361

  • 博客(472)
  • 资源 (46)
  • 收藏
  • 关注

原创 Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制

经常会在网上直播讲课或者点评中看到可以在课件上或者桌面上进行画线标记划重点,其实实现并不难,原理就是在桌面上盖一个透明图层,然后根据鼠标点绘制曲线。今天分享如何通过Qt的QGraphics体系来实现这个功能,以前的文章已经介绍过使用Qt进行曲线绘制及相关原理,所以这里就不再重复了,直接讲关键部分代码。

2022-10-26 22:30:57 5933

原创 git 常用操作

在当前分支上新建本地分支git checkout -b branch_new删除本地分支git branch -d branch_new将本地分支上传到远程分支并建立连接(建立连接后才能在本地提交今后的变更)git push origin develop:developgit branch --set-upstream-to=orgin/develop删除远程分支git push --delete origin dev修改远程分支名称git branch -m branch_ol

2021-07-05 14:57:49 1081

原创 Qt 实现钢笔画线效果详细原理

前言上一篇文章:Qt 实现画线笔锋效果详细原理,根据这篇介绍的实现笔锋效果的原理,我们很容易实现另外一种笔效:钢笔。所谓的钢笔笔效,就是真实还原钢笔书写出来的线条效果,其特征就是:根据笔的绘制速度而线条的宽度会逐渐变化,写得越快,线条越细,并且在收笔时带有笔锋效果。那么,在上一篇文章的基础上,稍微修改一下,就可以实现这个效果,看下效果图:实现原理从上一篇文章我们知道,绘制的曲线是通......

2020-02-16 13:08:58 4469 3

原创 Qt鼠标拖动绘制基本几何图形

用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。本文Demo下载地址。

2019-06-27 18:58:08 14429 31

原创 Qt 鼠标/触屏绘制平滑曲线,支持矢量/非矢量方式

前言Qt通过鼠标或者触屏,实时绘制平滑曲线,通常有两种方式实现:矢量绘图和非矢量绘图,这两种画线方式从实现上有些不同,其原理也不太一样,稍后会做详细介绍。而鼠标或者触屏画线也不大一样,通常如果只实现鼠标画线的话,那么只需要重新实现鼠标事件即可(mousePressEvent、mouseMoveEvent、mouseReleaseEvent),而要在触控屏上画线,如果需要支持多点画线的话,就必须处......

2019-06-26 20:05:39 6672 18

原创 语音伪造全景:类型、模型、应用与鉴别指南

面向产品、风控、媒体与技术团队的入门和进阶读物更新日期:2026 年 7 月 29 日。文中产品能力以公开资料为准;模型、价格、许可和可用区域变化很快,落地前应再次核验。一段听起来像真人的语音,不再天然等于“真人亲口说过”。今天的合成系统已经可以根据一段文本生成富有停顿、情绪和口音的旁白;也可以从一小段授权参考音频中提取音色,在另一种语言中说出此前从未说过的话;还可以把某人的真实讲话转换成另一位说话人的声音。

2026-07-29 14:49:47 323

原创 【Qt for Harmony】 Qt 5.12.12 鸿蒙版 Windows 交叉编译

本文记录了在Windows 11环境下使用MinGW gcc 8.1.0作为主机编译器、OHOS Clang 15作为目标编译器,交叉编译Qt 5.12.12分支以适配鸿蒙系统(aarch64-linux-ohos)的完整过程。文章详细解析了交叉编译架构,包括主机工具链与目标工具链的区分,Qt配置中-platform与-xplatform参数的作用,以及ohos-clang mkspec的关键配置。重点总结了编译过程中遇到的8个典型问题及解决方案,特别是由于Unix风格Makefile在Windows环境下

2026-07-28 13:15:00 322

原创 【音频基础学习】第 14 天,做一次完整复盘

本文系统梳理了数字音频处理的全链路知识体系,将14天的学习内容整合为一张完整认知地图。核心要点包括:1)声音从模拟信号到PCM数字表示的转换过程(采样率/位深/声道);2)WAV文件与PCM的关系;3)Frame在多声道处理中的关键作用;4)时域波形与频域频谱的互补分析方法;5)音频处理功能的完整实现流程;6)常见认知误区解析。文章强调建立层次化思维框架,为后续工程实现和算法学习奠定基础,最后通过8个自检问题巩固核心概念理解。

2026-07-27 14:00:00 189

原创 【音频基础学习】第 13 天,把概念映射到工程代码

前 12 天你已经学了很多音频概念。把概念映射到代码里。sampleRatechannelsPCM bufferPeakRMSexport这些不是孤立字段,而是前面所有概念在工程里的落点。sampleRate对应每秒 frame 数channels决定每 frame 有多少 sample决定每个 sample 的字节数和范围PCM buffer 必须配合格式信息解释多声道处理应围绕 framePeak/RMS 要先正确读取 sample。

2026-07-26 14:00:00 338

原创 【音频基础学习】第 12 天,建立常见处理器的概念框架

本文介绍了音频处理中的常见工具(EQ、压缩器、降噪等)的基本概念与应用框架。主要内容包括:EQ通过调整不同频段增益改变音色,压缩器通过控制动态范围稳定电平,降噪处理各类噪声但会带来副作用。重点阐述了各处理器的核心参数、适用场景及使用注意事项,强调处理顺序的重要性。文章旨在帮助读者建立概念框架,理解不同处理器的功能边界和相互关系,为后续深入学习音频处理技术奠定基础。通过理论讲解与练习建议,引导读者在实践中掌握音频处理的基本原理。

2026-07-25 13:45:00 180

原创 【音频基础学习】第 11 天,理解重采样和格式转换

这篇文章系统介绍了音频格式转换的核心概念,主要包括: 重采样(Resample)的原理与误区 不是简单删点或补点 需要插值、滤波和精确计算 需注意混叠和低通滤波 位深转换的本质 高位深转低位深产生量化误差 Dither的作用与原理 低位深转高位深不会提高质量 声道转换的注意事项 单声道与立体声转换方法 相位和峰值问题 编码转换的三种类型 规格转换 编码转换 封装转换 常见误区 有损转无损不能恢复质量 采样率/位深的提升不等于质量提升 文章通过清晰的框架和实例,帮助读者理解音频转换的核心原理与实际应用中的注意

2026-07-24 13:00:00 337

原创 【音频基础学习】第 10 天,学习最基础的音频处理

这篇文章介绍了音频处理中的5种基础操作:裁剪、拼接、淡入淡出、归一化和静音检测。主要内容包括: 裁剪音频需按frame边界操作,避免破坏多声道数据结构和产生点击声。 拼接音频可能导致爆音,可通过淡入淡出或交叉淡化解决。 淡入淡出是通过随时间变化的增益系数实现的,有线性、等功率等不同曲线。 归一化是统一调整音频电平,但峰值归一化不等于响度统一。 静音检测需要设置阈值和持续时间参数,不能简单判断采样值是否为0。 这些操作有些会修改PCM数据(如裁剪、淡化),有些只是分析(如静音检测)。文章还指出了常见误区,如认

2026-07-23 13:30:00 320

原创 【音频基础学习】第 9 天,理解 FFT 的作用

本文介绍了FFT(快速傅里叶变换)在音频分析中的核心作用。FFT将时域信号转换为频域信息,通过分析一小段音频窗口(如1024/2048个采样点)来计算频率分布。文章解释了关键概念:窗口长度影响时间与频率分辨率(长窗口频率更精确但时间模糊,短窗口反之);频率分辨率=采样率/FFT点数;窗函数(如Hann)用于减少边界突变导致的频谱泄漏。此外还澄清了常见误区,如FFT并非绝对精确、点数需权衡分辨率与计算成本等。最后说明声谱图即连续FFT结果的时空排列,为后续实际音频处理打下基础。

2026-07-22 13:00:00 214

原创 【音频基础学习】第 8 天,进入频域基础

摘要 本文介绍了音频分析中的频域概念,是时域观察的补充视角。频域关注声音的频率成分组成而非时间变化,通过频谱图可分析基频、谐波、噪声分布等特性。文章解释了正弦波作为基础元素的意义,基频与谐波对音色的影响,噪声的频域特征,以及频谱图与声谱图的解读方法。同时强调了时域和频域分析的互补性:波形适合时间定位,频谱擅长频率分析。最后指出频域在EQ、滤波、降噪等音频处理中的实际应用价值,并为后续学习FFT技术打下基础。

2026-07-21 14:00:00 321

原创 【音频基础学习】第 7 天,认识常见音频格式

摘要 本文从音频工程角度解析常见音频格式的核心概念,重点区分编码与封装、有损与无损压缩的本质差异。WAV作为PCM数据的常见封装格式,适合原始音频处理但体积较大;MP3/AAC采用有损压缩,牺牲音质换取小体积,适合分发;FLAC实现无损压缩,平衡质量与体积。文章澄清了"MP3转WAV恢复音质"等常见误区,强调音频处理链路应优先使用WAV/无损格式避免质量损失,并解释了码率、封装格式等关键参数的实际意义。通过建立这些基础概念框架,读者能更准确地选择格式方案并理解音频处理流程。

2026-07-20 13:30:00 381

原创 【音频基础学习】第 5 天,理解音量、增益和分贝

第 4 天你学会了看波形,知道波形的高低和振幅有关。但真正进入音频工程后,只说“波形大一点”“声音小一点”是不够的。音频里的大小到底怎么描述、怎么计算、怎么避免放大后失真。音量增益Gain分贝dB数字满刻度dBFS峰值Peak均方根RMS这些概念会在归一化、动态范围控制、响度分析、削波检测、导出电平控制中反复出现。学好这一天,后面很多处理功能会更容易理解。增益Gain对音频信号整体放大或缩小的比例。gain = 0.5:振幅变成一半gain = 1.0:保持不变gain = 2.0:振幅变成两倍。

2026-07-18 13:45:00 264

原创 【音频基础学习】第 4 天,学会看波形

这篇文章介绍了波形图在音频处理中的基础应用。主要内容包括:波形图的横轴表示时间,纵轴表示振幅;中心线代表0振幅位置;静音段表现为接近中心线的平直线;爆点显示为短促尖峰;削波表现为顶部/底部被切平。文章强调峰值高不一定代表响度大,波形图是时域工具而非频域分析工具,并指出初学者常见的误解。最后提供了观察人声、音乐和环境音的实践练习,帮助建立波形与听感的关联。

2026-07-17 13:30:00 215

原创 【音频基础学习】第 3 天,理解声道和帧

本文讲解了音频工程中的关键概念:声道(channel)、采样值(sample)和帧(frame)。声道指独立的声音信号路径,单声道只有一路信号,立体声有两路(左右声道),多声道则更多。采样值是某个声道在特定时刻的采样数据,而帧则是同一时刻所有声道采样值的组合。文章重点区分了交错排列(interleaved)和平面排列(planar)两种PCM数据组织方式,强调多声道处理必须按帧边界操作,否则会导致声道错位或数据错误。最后提供了计算帧字节大小和时间位置转换为帧位置的方法。这些概念对正确理解和处理音频数据至关重

2026-07-16 13:15:00 468

原创 【音频基础学习】第 2 天,理解数字音频如何表示声音

这篇文章从零基础讲解了数字音频的核心概念。首先解释了模拟信号(连续变化)与数字信号(离散数值)的区别,指出计算机必须将声音数字化才能处理。核心概念包括:采样(定期记录声音瞬时值)、采样率(每秒采样次数,如44.1kHz)、位深(每个采样值的精度,如16-bit),以及量化(将连续振幅映射到有限数值)。文章用拍照类比采样,用刻度尺比喻量化,强调采样率决定时间精度、位深决定振幅精度。最后指出数字音频存储的是离散采样点,播放时才还原为连续波形。

2026-07-15 13:15:00 662

原创 【音频基础学习】第 6 天,理解削波和动态范围

这篇文章摘要: 音频处理中的关键概念包括削波、动态范围、噪声底和余量。削波是信号超过系统范围被截断的现象,数字削波会导致波形失真且无法通过降低音量修复。动态范围指最小到最大可用声音的范围,由噪声底和最大电平决定。录音时应避免信号接近上限(0 dBFS),需保留余量以防突发峰值。位深(16-bit/24-bit)影响动态范围,24-bit在制作阶段提供更大余量。不同应用场景对动态范围有不同需求,需平衡信噪比和失真风险。正确理解这些概念对录音、混音和导出至关重要。

2026-07-14 17:41:31 15

原创 【音频基础学习】第 1 天,先理解声音本身

摘要 声音本质上是一种振动,通过介质(如空气)传播,引起人耳鼓膜振动后被感知。理解声音需掌握三个关键概念: 频率(Hz):决定音高,频率越高音调越尖,如鸟叫;频率越低音调越沉,如雷声。 振幅:决定声音强弱,振幅越大响度越高,但响度还受频率和持续时间影响。 波形:决定音色,不同振动形状(如正弦波、方波)使相同音高的钢琴和小提琴声音截然不同。 频率、振幅和波形分别对应音高、响度和音色,是理解数字音频(如采样、PCM)的基础。

2026-07-14 15:44:51 387

原创 QML 实现好看的时钟卡片

本文介绍了一个用QML实现的精美动态时钟效果。时钟中心显示hh:mm时间,外圈由120个刻度组成,小黑点秒针绕圈运动并触发外圈凸起动画。实现关键点包括:1) 使用16ms定时器实现秒针平滑移动;2) 通过Canvas绘制动态圆环和刻度;3) 使用高斯函数计算当前秒针位置对周围刻度的影响,实现果冻般的凸起效果。文章提供了基础版代码,并说明增强版通过增加高光、阴影和渐变等细节提升"苹果风"质感。核心思路是将几何计算与材质渲染结合,创造流畅的视觉体验。

2026-07-13 13:30:00 384

原创 Qt + FFmpeg 实战:视频片段精准截取功能实现

本文介绍了如何在Qt和FFmpeg中实现视频片段的精准截取功能,相比之前的快速裁剪方法,该方法通过解码、按帧裁剪和重新编码的流程,实现了毫秒级精度的视频截取。文章详细阐述了功能流程、页面入口设计以及导出封装实现,重点说明了精准截取与快速裁剪的区别,包括核心策略、精度差异和处理流程等。该功能通过VideoClipProcessor::trimReencode()方法实现,支持视频按帧精度、音频按采样点精度进行裁剪,最终生成新的视频文件而不修改原始文件。

2026-07-12 13:15:00 481

原创 Qt + FFmpeg 视频工具:视频一键压缩功能实现

视频压缩技术概述 本文介绍了针对非专业用户设计的视频一键压缩功能,通过三个预设模式简化视频压缩流程: 技术方案:采用FFmpeg转码管线,底层实现H.264重编码和MP4封装,上层通过工具类封装复杂参数,提供"清晰优先/平衡/小体积"三种预设模式(CRF值分别为18/23/28) 核心算法:使用CRF恒定质量因子控制画质与体积平衡,实现自动分辨率缩放与偶数对齐处理,并通过AudioFIFO+SwrContext技术确保音频格式兼容性 实测效果:原始298MB视频经压缩后,三种模式分别输出151MB/52.8

2026-07-11 19:00:00 686

原创 Qt + FFmpeg 视频工具:视频容器转换(Remux)功能实现

本文介绍了音频工具中实现的无损容器转换功能(Remux),通过FFmpeg的stream copy技术,仅改变文件封装格式而不进行解码和重新编码。该功能支持MP4、MKV、MOV、WebM四种目标容器,具有速度快、质量无损的特点。核心算法包括八步处理管线、流映射与codec_tag清零、时间戳重映射等技术细节。文章重点阐述了容器兼容性预检机制,通过启发式检查提前发现不兼容的流类型,提升用户体验。整体架构分为算法层、状态层、UI层和入口层,与现有视频模块保持清晰的职责边界。

2026-07-10 13:30:00 304

原创 Qt + FFmpeg 音频工具:媒体流详情实现

本文介绍了AudioTools的媒体流详情功能,该功能通过FFmpeg解析音视频文件中的流信息。核心功能包括:按需解析容器级信息(格式、时长、元数据等)和各流参数(编码格式、采样率/分辨率、帧率等);支持音频流(通道数、采样格式等)和视频流(分辨率、色彩空间等)的特有字段;保留已解码PCM数据避免重复处理。算法流程为:打开文件→探测流信息→遍历解析各流参数→结构化存储→前端展示。关键特点包括延迟解析、一次性获取完整信息,以及将首个音频流参数提升至顶层供快速访问。该功能为后续音视频处理提供全面的参数依据。

2026-07-09 13:15:00 416

原创 Qt + FFmpeg 音频工具:音量分析实现

本文介绍了音频分析工具中音量特征检测的实现方法,重点阐述了PCM音频的峰值、响度和动态范围等核心指标的计算原理。系统通过单次遍历音频采样点,同步统计峰值绝对值、平方和、绝对值总和以及削波样本数,并基于这些数据计算Peak dBFS、RMS值、峰均比等关键参数。分析过程采用只读方式,不修改原始数据,能够快速输出格式化结果供界面展示。该功能为音频质量检查、增益调整和动态处理提供了重要参考依据,尤其适用于判断音频是否接近削波、响度是否合理以及动态范围是否被过度压缩等场景。

2026-07-08 07:45:00 349

原创 Qt + FFmpeg 音频工具:人声提取 / 伴奏分离实现

AudioTools 提供两种人声/伴奏分离方案:基于立体声中置提取的快速算法(center)和基于神经网络的智能分离(arnndn)。中置方案通过相位差运算处理立体声素材,速度快但仅适合标准混音;神经网络方案适配单/双声道,利用预训练模型提取人声特征,效果更好但速度较慢。两种方案均支持提取人声或分离伴奏模式,处理后生成独立WAV文件并支持波形对比试听。技术实现上,中置方案采用PCM逐帧运算,神经网络方案通过FFmpeg滤镜链完成FLTP格式转换和模型推理,伴奏分离采用原始信号减人声方式实现。

2026-07-07 12:45:00 362

原创 Qt + FFmpeg 音频工具:重采样实现

音频重采样功能解析 本文详细介绍了音频处理工具中的重采样功能实现,支持采样率、位深和通道数三个维度的同步调整。核心采用FFmpeg的SwrContext实现高效转换,关键技术点包括: 格式映射:通过SampleSpec结构体统一管理采样格式,支持8/16/32位位深转换 重采样管线:利用SwrContext单次完成采样率/位深/通道数转换,包含延迟样本处理机制 安全设计:包含整数溢出保护、残留样本刷出等健壮性措施 非破坏性处理:重采样后自动替换当前PCM并清空相关缓存 该功能作为音频处理流水线的基础环节,为

2026-07-06 13:00:00 342

原创 Qt + FFmpeg 音频工具:降噪功能实现

摘要 AudioTools 提供三种互补的降噪算法(FFT频谱降噪、非局部均值降噪和神经网络降噪),针对不同类型背景噪声(稳定底噪、周期性噪声、复杂环境噪声),支持高通/低通滤波辅助处理。采用非破坏性工作流,用户可实时预览对比不同参数效果后再导出。处理流程异步执行,避免阻塞界面,核心算法通过参数调节平衡降噪强度与音质保真度,适应会议录音、直播等多种场景需求。

2026-07-05 10:00:00 361

原创 Qt + FFmpeg 音频工具:音频特征图功能实现

波形图解决的是“时间轴上的振幅变化”,频谱图解决的是“某个时间点附近的频率能量分布”,但在实际分析音频时,这两类图仍然不够。这段音频是不是整体偏小?是否接近削波或已经出现爆点风险?声音偏亮还是偏闷?更像有调性的人声/乐音,还是更像噪声?左右声道是否存在延迟偏移或近似反相?因此项目在现有 PCM 解码链路上新增了一个统一的“音频特征图”入口,把常见的音频统计和特征可视化集中到同一页展示。幅度直方图dBFS 电平直方图Peak / RMS / 过零率曲线自相关图倒谱图。

2026-07-04 11:00:00 338

原创 Qt/QML音视频文件原始十六进制查看器

这篇文章详细介绍了AudioTools中RawHexPage.qml的设计与实现,重点讲解了如何通过C++自绘QML控件HexViewerItem来高效查看音视频文件的原始字节数据。文章分为五个部分: 功能概览:展示页面三大区域(控制面板、十六进制查看器、结构标记栏),并列出支持的功能如字节跳转、搜索、结构识别等。 QML页面组织:说明页面如何通过属性绑定与C++控件交互,保持QML层简洁。 C++自绘控件的必要性:解释为何采用QQuickPaintedItem而不是纯QML方案,特别是针对大文件处理的性能

2026-07-03 13:30:00 257

原创 Qt + FFmpeg 音频工具:音频编辑器功能实现

本文摘要: 音频编辑器实现了一种支持连续编辑的音频处理功能,核心设计围绕编辑缓冲和历史管理展开。系统通过独立缓冲区和剪贴板机制,确保原始音频数据不受破坏性操作影响,同时支持多步撤销/重做。关键技术包括: 采用帧对齐的编辑区间换算算法,确保多声道音频数据的完整性 建立编辑缓冲区和内部剪贴板,隔离原始数据与编辑操作 实现基于快照的撤销/重做系统 统一边界处理逻辑,避免不同操作间的行为差异 该方案既满足了音频编辑的基本需求(删除、剪切、复制、静音等),又通过状态隔离保证了系统的稳定性和数据一致性。编辑结果最终可导

2026-07-02 12:45:00 239

原创 Qt + FFmpeg 实战:实现波形自动对齐功能

在音频剪辑、配音替换、伴奏同步、视频后期和多机位录音整理中,经常会遇到这样的问题:两段音频内容相同或相近,但起始时间不一致。手动拖动波形可以解决,但效率低,而且在长音频里很难精确找到对齐点。本文介绍 “波形自动对齐”功能的实现方式。核心思路是:先在模板音频中找到一段能量较高、特征明显的区域,再把这段模板在目标音频中做多级匹配,最终计算出目标相对模板的偏移量,并通过补零或裁剪生成对齐后的 WAV。统一格式,转为 mono float。构建能量包络,降低相位和音量差异影响。

2026-07-01 13:00:00 330

原创 Qt + FFmpeg 音频工具:平滑截取功能实现

音频裁剪看起来只是按时间范围截出一段 PCM,但实际使用中经常会遇到一个问题:选区开始点或结束点突然出现“啪”“咔嗒”一类爆点。放到波形或频谱图上看,边界位置可能会出现一根明显的冲值条。原因并不复杂。片段开始:静音 -> 第一个采样值片段结束:最后一个采样值 -> 静音如果第一个采样值或最后一个采样值离零电平很远,或者边界附近波形变化很陡,这个瞬时跳变就会变成可听见的爆点。在用户选区附近寻找更平滑的边界。对截取片段首尾做极短淡入淡出。导出新的 WAV,不修改当前 PCM。

2026-06-30 13:00:00 674

原创 Qt + FFmpeg 实战:实现视频片段裁剪功能

视频片段裁剪实现方案 核心功能 快速无损裁剪:通过FFmpeg的stream copy技术实现视频片段快速导出,避免重编码带来的质量损失和处理时间 交互式编辑界面:提供时间轴缩略图、播放头控制、选区调整和音频波形预览等功能 技术架构 前端交互层: VideoTrimPage:功能入口,处理参数设置和导出控制 VideoTrimEditor:核心交互组件,维护选区状态和时间轴显示 中间调度层: MediaAnalyzer:协调缩略图生成、音频分析、导出任务等异步操作 后端处理层: FFmpeg工具链:负责实际

2026-06-29 12:30:00 361

原创 Qt + FFmpeg 实战:实现视频首帧与封面图提取功能

本文介绍了视频截图和封面图提取功能的实现方案。该功能支持两种模式:提取内嵌封面或首帧(自动回退机制),以及按时间点截取视频帧。系统采用分层架构,通过FFmpeg解码视频流并转换为QImage格式,前端QML界面提供参数配置和结果预览,业务层处理异步任务调度和状态管理。功能实现包含路径处理、格式转换、尺寸调整等细节,支持PNG/JPG输出格式,并能智能处理零值参数,确保视频处理基础能力的稳定性和扩展性。

2026-06-28 11:45:00 364

原创 Qt + FFmpeg 实战:视频添加替换音频

本文介绍了一个视频音频处理工具的功能实现,该工具支持三种主要操作模式:替换原音轨、追加新音轨和移除全部音轨。系统采用分层架构设计,前端通过QML页面提供用户交互,业务层处理参数校验和转码策略,核心层使用FFmpeg进行容器级的音视频流重组。关键技术点包括不解码视频流直接复制packet、智能音频转码策略(自动/直接复制/强制AAC)、多种时长处理方式,并通过参数校验确保操作可行性。该方案在保证视频质量的同时,实现了高效的音轨处理功能。

2026-06-27 08:00:00 704

原创 Qt + FFmpeg 实战:视频提取音频

本文介绍了视频提取音频功能的两种实现方案(流复制和解码再编码)及其选择原因,详细阐述了整体架构设计,包括前端页面与后端处理流程。前端页面提供多种音频格式和参数选项,并自动处理路径与编码器匹配。后端负责参数验证、任务调度和状态管理,确保高效可靠地完成音频提取任务。整个功能采用异步处理,保持界面响应性,同时提供清晰的用户反馈。

2026-06-26 13:45:00 559

原创 音频 DC 偏移校正实现:复用 5Hz 高通滤镜去除直流分量

本文介绍了音频处理中的DC偏移问题及其校正方法。DC偏移指音频波形中心线偏离零轴的现象,会影响动态余量、后续处理效果和播放质量。项目采用5Hz高通滤波器去除直流分量,复用现有的FFmpeg处理管线实现高效校正。文中详细阐述了技术原理、接口设计、输入校验和峰值分析流程,核心通过调用filterPcm函数实现校正,并分析了前后峰值变化来验证效果。该方法适用于常规音频处理,但需注意可能滤除极低频信号的问题。

2026-06-25 13:30:00 351

Qt + FFmpeg 实战:将音视频文件解码为 PCM 数据,获取音视频文件基础属性、流信息和元数据

博客地址: https://luoyayun361.blog.csdn.net/article/details/161804138 在音视频开发中,PCM 是最常见的原始音频数据格式之一。无论是做波形显示、音频播放、音频分析、语音识别前处理,还是后续编码转码,很多场景都需要先把压缩音频解码成 PCM。 本文基于一个 Qt + FFmpeg 项目,介绍如何使用 FFmpeg 打开音视频文件,找到其中的音频流,解码音频帧,并统一转换成 s16 interleaved PCM 数据,最后使用 Qt 的 QByteArray 保存。 解析音视频文件的基础属性、媒体流信息和元数据,并使用 QVariantMap 传递给 QML 进行展示。

2026-06-08

QML实现的20种酷炫进度组件以及20种Loading组件

使用QML可以实现很多酷炫的动效,在日常开发中很常见,以下是使用QML实现的一些组件展示,包括光影、粒子等动效,可在项目中引用或者学习。 博客地址:https://luoyayun361.blog.csdn.net/article/details/156368245

2025-12-29

QML QtQuick.Controls 1.4中 TreeView Demo

QML中的TreeView控件,在Qt5中使用的是QtQuick.Controls1.4 模块下的,最近正好在做一个新的TreeView的需求,将过程中涉及到的一些要点做一下简单分享,知道其内部绘制方式,就便于去实现自己想要的效果。 博客介绍 https://blog.csdn.net/luoyayun361/article/details/155659002

2025-12-07

Qt/QML 实现类似Xmind的简易思维导图Demo源代码

Xmind 是全球领先的思维导图软件,能够快速整理思路、激发灵感、规划项目与高效协作,操作起来也很方便。 本文做一个简单版的类似Xmind的思维导图Demo,可供学习参考。 博客介绍:https://luoyayun361.blog.csdn.net/article/details/155592962 跟Xmind的快捷键一样,选中当前节点后, Enter:创建同级节点 Tab:创建子节点 键盘方向键:切换当前节点 Delete:删除当前节点 点击节点交接处:可折叠所有子节点树,折叠后数字显示下一级的节点数量(不会递归遍历; 拖动根节点:可以移动整个节点树; 拖动根节点到右侧和下侧边缘,自动拓展画布,保证节点树完整显示在画布中;

2025-12-05

Qt/QML 实现类似Xmind的简易思维导图Demo演示

Qt/QML 实现类似Xmind的简易思维导图Demo演示 博客介绍地址: https://luoyayun361.blog.csdn.net/article/details/155592962 跟Xmind的快捷键一样,选中当前节点后, Enter:创建同级节点 Tab:创建子节点 键盘方向键:切换当前节点 Delete:删除当前节点 点击节点交接处:可折叠所有子节点树,折叠后数字显示下一级的节点数量(不会递归遍历; 拖动根节点:可以移动整个节点树; 拖动根节点到右侧和下侧边缘,自动拓展画布,保证节点树完整显示在画布中;

2025-12-05

基于Qt/QML实践:番茄工坊专注·高效·成长的桌面番茄钟与任务管理器

介绍一个基于Qt/QML实现的一个优雅的桌面效率工具,集番茄钟、极简待办、能量激励与主题商店于一体。兼具美感与实用性,帮助你建立持续的专注习惯。可供学习和参考。博客地址:https://blog.csdn.net/luoyayun361/article/details/155246527 - 平台与架构:Qt Quick (QML) + C++ 后端,qmake 构建 - 数据与持久化:SQLite + QSettings(用户级 INI 配置) - 视觉风格:玻璃拟态、渐变背景、发光/阴影、粒子动画 - 模块组成:番茄钟、任务管理、能量系统、主题商店、历史与日历 基础功能 - 添加任务:在任务输入框输入并回车或点击 `+` - 开始专注:点击主按钮开始 25 分钟番茄钟 - 暂停/继续:再次点击主按钮切换状态 - 重置:点击右侧重置按钮 - 开始休息:完成后从弹窗选择休息 5 分钟 - 切换日期:打开日历并选择日期 - 查看历史:在历史窗口浏览任务与时间 - 清理历史:在历史弹窗中点击“确认清空” - 主题商店:点击主题查看并解锁主题

2025-11-25

Qt/C++ 线程池TaskPool与 Worker 框架实践

为什么需要 TaskPool + Worker 统一并发入口:将不同类型任务(CPU/IO/网络/图形/定时)统一提交到任务池,按优先级调度执行。 可观测与可控:内置任务状态、生命周期信号、进度与消息回传、取消与超时控制。 跨平台与高可用:基于 QtCore/QtNetwork/QtGui,适配 Windows/Linux/macOS,线程安全无泄漏。 Demo介绍一个基于 Qt/C++ 的任务池与 Worker 框架:应用场景、使用方式、架构设计思路、关键代码,以及构建与测试方法 博客介绍:https://luoyayun361.blog.csdn.net/article/details/155130493

2025-11-24

PySide6调用OpenAI的Whisper模型进行语音ASR转写

Whisper 是 OpenAI 开发的一款通用语音识别模型,采用大规模弱监督训练方法,支持多语言语音转录和翻译任务。该模型基于 Transformer 架构,具有高准确性和鲁棒性,适用于多种场景下的语音处理需求。OpenAI Whisper作为基于Transformer架构的端到端语音识别模型,其核心设计天然支持多语言处理。 当前Demo使用PySide6+Whisper模型实现音频转写,添加流式输出和标点符号。

2025-09-28

Qt QML实现Windows桌面歌词动态播放效果

Qt QML实现Windows桌面歌词动态播放效果 博客主页:https://blog.csdn.net/luoyayun361

2025-04-16

Qt QML实现Windows颜色提取器,实时显示鼠标处的颜色值

Qt QML实现Windows颜色提取器,使用Qt5.15.2版本,QML完成UI,实现鼠标移动实时展示鼠标处的颜色值。 博客主页:https://blog.csdn.net/luoyayun361

2025-04-16

QML Combobox 自动过滤,输入字符串后自动匹配

博客主页:https://blog.csdn.net/luoyayun361 QML ComboBox控件,输入关键字后自动过滤包含关键字的列表,方便快速查找列表项

2025-04-03

Qt6 QML实现Windows屏幕录制成视频

使用Qt6的类 QMediaCaptureSession、QScreenCapture、QMediaRecorder,其中QScreenCapture 最低版本 Qt6.5。实现一个屏幕录制功能。 本机使用Qt6.8 MinGW进行编译。博客主页:https://blog.csdn.net/luoyayun361

2025-03-20

QT QML实现音频波形图进度条

使用音频Qt QML实现一个音频波形图进度条,导入音频文件,绘制音频波形图作为进度条的背景,可点击波形图定位当前播放进度,也可以直接拖动进度条。 博客主页:https://luoyayun361.blog.csdn.net/

2025-03-18

Qt5.15.2 Linux ARM架构源码编译安装(UOS20国产系统)已编译好的包

国产系统UOS系统,华为鲲鹏处理器 ARM架构,Qt5.15.2编译输出的包。设置环境变量后可用。博客地址:https://luoyayun361.blog.csdn.net/article/details/118395262

2025-03-17

Qt QML 解决SVG图片显示模糊的问题

Qt中显示SVG图片模糊的问题,自绘图形,继承于QQuickPaintedItem,然后注册到QML中使用

2025-03-17

Windows Qt动态监测系统分辨率及缩放比变化,提供QWidget和QML项目的调用demo

Windows 显示设置中,可以修改缩放比,所有界面和文字会同比例放大或缩小,在开发桌面程序时, 实时监测Qt应用程序在不同缩放比例下的表现,可以及时调整程序界面以适应不同显示屏幕的需求。博客主页:https://blog.csdn.net/luoyayun361

2025-03-16

KDDockWidget源码修改及自定义

该代码主要是 修改KDDockWidget的源码以适应QtQuick模式,包括编译QtQuick模式、自定义标题栏和窗口样式、修改导航图标、分隔线样式以及调整窗口尺寸限制。此外,还展示了如何在标题栏上添加新按钮并处理点击事件,以及解决dock窗口均分宽度的问题。 博客主页:https://luoyayun361.blog.csdn.net/article/details/128691836

2025-03-16

C++ Qt实现视频帧提取功能

使用Qt C++实现视频帧提取功能,UI使用QML实现,选择视频文件,以及图片输出目录,点击开始提取,可以将视频帧生成每张图片保存到本地。博客主页:https://blog.csdn.net/luoyayun361

2025-03-15

Qt QML实现弹球消砖块小游戏

使用Qt QML实现的一个弹球消砖块的小游戏,博客主页:https://luoyayun361.blog.csdn.net/

2025-03-14

Qt QML实现鼠标自由选择不规则区域进行截图

不规则区域进行截图是一种常见的应用场景,通常用于程序截图工具或者图像处理软件中。主要是为了让用户可以自由选择任意形状的区域进行截图,而不仅仅局限于矩形区域。这样用户可以更灵活地进行截图操作,特别是对于需要截取特定形状区域的情况下非常实用。 通过实现鼠标自由选择不规则区域进行截图,用户可以更精确地选择需要截取的内容,避免不必要的部分被包含在截图中。

2025-03-14

QML实现文件十六进制显示Demo

在QML项目中实现一个显示文件十六进制数据展示的demo,可直接引入项目使用。 支持高亮某段数据,快速定位,头部底部对齐,主题切换,截图保存,切换展示宽度等功能。在开源代码的基础上进行扩展,并移植到QML中进行使用。 博客主页:https://blog.csdn.net/luoyayun361

2023-09-08

Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等

使用Qt QGraphic实现一个应用场景,直接导入背景图,并在背景画布上绘制几何图形,包括矩形、圆形等,支持画布整体移动、放大和缩小,画布恢复,图形item选中、移动、旋转。item移动 会实时显示全局坐标以及相对于背景画布的坐标。本Demo提供基本功能实现,便于在此基础上进行扩展。 博客主页:https://blog.csdn.net/luoyayun361

2023-06-30

QML模块及qmldir使用演示demo

在开发QtQuick项目中,当项目文件很多的情况下,可能会分成多级文件夹来进行分类,还有一些通用类型文件,如公共组件,通用配置等等,需要在各个不同的文件中进行调用,这种情况下,一种方式是在当前需要引用的文件中通过关键字`import` 加上相对路径,从而找到通用文件目录。另一种方式就是将通用文件目录设置成qml模块形式,通过import直接引入模块名称就可以直接调用相关qml了,这样的好处是在任何不同的目录中都可以随处导入模块,而不用考虑相对路径的问题。 demo是QML模块及qmldir使用演示示例。

2023-04-16

qml 类似移动端时间设置控件

qml实现一个类似手机端闹钟或其它时间设置控件。可以用ListView实现其效果,但是QML提供有现成的控件可以用,所以要实现这个效果更方便。 博客地址:https://blog.csdn.net/luoyayun361

2023-01-07

qtmqtt Qt6.2.4+VS2019 x64编译动态库及简单示例(附带Qt在线安装包+perl安装包)

随着Qt6的发布,Qt官方开始推崇cmake编译,而qtmqtt对应的版本和Qt发布的版本一致的,所以qtmqtt从6.0发布以来,也开始默认用cmake编译。这样一来,很多之前习惯用Qt5的童鞋就有点摸不着头脑了,特别是一些刚入门的新手,看到Qt工程,习惯性的一上来就去找pro工程文件,但是Qt6的cmake工程是没有pro文件的,所以更是二脸懵逼。 资源包含了qt在线安装包软件和perl安装包。 demo下的mqtt目录可以直接拷贝到其他项目使用 博客介绍:https://luoyayun361.blog.csdn.net/article/details/128339682

2022-12-16

QML + KDDockWidget 实现 tabwidget 窗口可独立浮动和缩放

QML + KDDockWidget 实现 tabwidget 窗口可独立浮动和缩放效果 KDDockWidget是第三方开源项目,可以用于实现QML中Dock窗口效果,Qt本身不支持QML的Dock效果,所以正好弥补这部分空缺。而KDDockWidget中其实是支持Tab合并效果,但是在实际使用过程中遇到很多问题,该功能并不是很完善,所以索性自己使用QML来实现tabbar效果,然后结合KDDockWidget,可将每个tab页面进行单独的浮动和缩放。 本Demo使用环境 Qt5.15.2+VS2019 KDDockWidget动态库是在源码基础上做过部分修改后重新编译的。 博客地址: https://blog.csdn.net/luoyayun361

2022-12-05

Qt+opencv 鼠标绘制进行图形识别并进行item对象创建-Demo

使用Qt + OpenCV实现,通过鼠标绘制几何图形,然后通过opencv进行图形识别,然后创建对应的几何图形item项。绘制使用QGraphics体系完成。 支持图形:直线、圆、椭圆、矩形、三角形。 快捷键:数字3 清屏 本示例通过简单演示整个流程,若运用到实际项目中需要进一步优化。 博客:https://blog.csdn.net/luoyayun361

2022-12-03

QML ListView实现TabBar标签拖拽移动位置效果

QML中TabBar要实现标签移动效果比较麻烦,不像QTabBar控件那样可以设置属性后就能移动,虽然在父类Container中提供了moveItem接口,但是要实现拖拽交换的视觉效果还是没那么容易。 本demo使用QML的ListView来实现该功能,并动态切换对应的page内容。demo提供了动态添加页、删除页、移动交换标签位置功能。 详情见:https://blog.csdn.net/luoyayun361

2022-11-25

QML 实现注册码输入控件,自动填入分隔符,粘贴内容格式化

QML TextField实现注册码输入控件,自动填入分隔符,粘贴内容格式化。 类似office的授权,产品密钥输入方式。 博客: https://luoyayun361.blog.csdn.ne

2022-11-06

Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制

本示例是使用Qt QGraphics框架来实现桌面画线标记功能,绘制流畅,支持快捷键擦除、退出、缩放等功能。 博客:blog.csdn.net/luoyayun361

2022-10-26

Qt实现简易截图工具(支持缩放、移动、保存、复制到粘贴板)

使用Qt Widget实现一个简易截图工具,支持选区角落拖动缩放、选区移动,支持保存,复制到粘贴板,支持快捷键调出截图、退出截图。 详情参考博客: https://luoyayun361.blog.csdn.net/article/details/126097384

2022-10-18

KDDockWidgets VS2019编译的动态库以及源码

本dll及demo编译环境: vs2019+Qt5.15.2 64bit。 32bit不能用!!! dll分quick和QWidget版是不一样的,对应的include头文件也不一样,不能混用。 example目录下包含两个演示demo,每个demo下有个KDDockWidgets文件夹,可以在自己的项目中直接添加 KDDockWidgets.pri到自己的工程中即可使用。 博客说明:https://luoyayun361.blog.csdn.net/article/details/117533375

2022-07-10

Wininet.dll 32+64位库下载

Wininet.dll 32+64位库下载

2022-06-25

QFtp实现批量文件上传

示例包含了FTP登录,为方便演示,本次连接的FTP服务器就是上篇文章中介绍的在windows本机搭建的FTP服务器。Demo功能包括:选择文件夹进行批量上传文件,列举FTP服务器上的所有文件,以及文件实时上传进度 这几个重要功能。其实QFTP还提供了很多其他接口,用法都是差不多的,可以举一反三。

2022-06-22

QML TableView Demo演示示例

QML中实现表格可以使用多种方式,比如直接使用ListView,定义每一行delegate,或者自定义Rectangle,放到Flipable中组合使用。Qt Quick Control1中 从5.1版本开始就提供了表格控件,但是感觉不怎么好用,在Qt Quick Control2中 5.12版本开始又提供了一个专门用于做表格的控件TableView,相比于前面的方案,使用Tableview更加简单和直接。那么,接下来就看看Quick Control2 的TableView使用方法。 博客介绍:https://blog.csdn.net/luoyayun361/article/details/122361571

2022-06-09

QtService 实现Qt后台服务程序

QtService是一个用于实现windows服务或unix守护进程的开源项目,下载地址 本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。 博客介绍:https://luoyayun361.blog.csdn.net/article/details/120655011?spm=1001.2014.3001.5502

2022-06-07

Qt 反射机制实现,通过类名创建对象

反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的地址或引用就可以获取到对象的类型信息,从而利用这些信息达到修改或重建对象的目标。 简单一点说,就是可以通过类名称来创建一个类对象,这在Java和Object-C中是原生支持的,所以实现起来非常简单,但是C++就不支持了,如果想要用到反射机制,那就得自己实现。

2022-06-02

C++、C语言基础知识点强化,以及相关经典面试题、数据结构和算法知识及相关面试题汇总。

C++、C语言基础知识点强化,以及相关经典面试题、数据结构和算法知识及相关面试题汇总。更多请参考:https://luoyayun361.blog.csdn.net/article/details/123289250?spm=1001.2014.3001.5502 https://luoyayun361.blog.csdn.net/article/details/105026257

2022-05-24

Qt 实现钢笔画线效果,根据画线速度改变笔宽

在Qt-WritingBoard基础上支持钢笔书写效果,会根据画线速度调整线条粗细。 快捷键控制: - 按键1:画线模式 - 按键2:擦除模式 - 按键3:清空画布 - 按键+:放大 - 按键-:缩小 博客介绍:https://luoyayun361.blog.csdn.net/article/details/104340258

2022-05-07

Qt 鼠标/触屏绘制平滑曲线(矢量/非矢量)

t通过鼠标或者触屏,实时绘制平滑曲线,通常有两种方式实现:矢量绘图和非矢量绘图,这两种画线方式从实现上有些不同,其原理也不太一样,稍后会做详细介绍。而鼠标或者触屏画线也不大一样,通常如果只实现鼠标画线的话,那么只需要重新实现鼠标事件即可(mousePressEvent、mouseMoveEvent、mouseReleaseEvent),而要在触控屏上画线,如果需要支持多点画线的话,就必须处理QTouchEvent事件才行,但是如果触屏上只支持单点画线,那也可以直接实现鼠标事件,因为第一个触点的事件会同时进入到QTouchEvent和Mouse事件中。QTouchEvent中可以区分出多点时每个触点的id,通过id进行区分每个点的数据。 原文链接:https://blog.csdn.net/luoyayun361/article/details/93650003

2022-05-06

空空如也

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

TA关注的人

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