惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Tlink

电子积木 光敏电阻与光敏电阻模块:从原理到实战应用 电子小白:什么是PCB(印刷电路板) 电子小白:万用表使用场景 电子小白的枕边书:电子学(The Art of Electronics) 电子小白:光耦到底是什么? 数码管与LED点阵:电子世界的“像素屏幕” 熟悉电子元器件之后,电子小白下一步该怎么走? 电子小白:什么是运算放大器(运放) - Tlink 电子小白入门:什么是稳压芯片? 电子小白入门之NE555 - Tlink 电子小白的工具三件套:面包板、杜邦线、万能板 - Tlink 电子小白入门:步进电机以及驱动器到底是个啥? 电子小白之集成电路 AI新时代真的来了,不管愿意还是不愿意 avalonia在国产芯片瑞芯微RK3588这么容易就跑起来了? 电子小白之晶振 电子小白之电感:通过无线充电带你彻底搞懂电感 电子小白之继电器 电子小白之MOS管 电子小白之三极管 电容是什么?一个“快充快放”的微型充电宝 电子小白之二极管 电压与电流之间的关系 电子电路中的“心脏”:电源 新手小白学电路
从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具
Tlink · 2026-03-25 · via 博客园 - Tlink

写在前面

最近在训练 QwenVL 模型时,需要大量的视频素材。由于数据源在客户的远程电脑上(通过向日葵访问),我需要录制一段监控实时视频作为训练数据。

本以为这是一个简单的任务,没想到却引发了一段有趣的开发经历。

寻找录屏软件的困境

打开浏览器,搜索"录屏软件",映入眼帘的是琳琅满目的选择。随便下载了一款看起来不错的软件,安装、启动、开始录制...

一切都很顺利,直到...

"您的免费录制时长已用完,请开通VIP会员"

看着屏幕上弹出的提示,再看看右上角的倒计时,我愣住了。1分钟?就这?

卸载软件时,我习惯性地打开安装目录,想看看有没有残留文件。就在这时,一个熟悉的文件名跳入眼帘:

ffmpeg.exe

恍然大悟

看到这个文件的那一刻,我突然意识到:这不就是我用过无数次的那个开源神器吗?既然软件底层用的是FFmpeg,那我为什么不自己动手呢?

打开AI助手,输入需求:

"帮我写一个Qt6录屏软件,需要手动选定区域,点击录屏即可"

AI很快就给出了完整的代码实现。复制、粘贴到Qt项目中,编译运行...结果当然是没那么顺利。

遇到的那些坑

坑一:FFmpeg路径问题

第一次运行,程序提示"FFmpeg Not Found"。奇怪,明明系统里已经安装了FFmpeg。

检查发现,虽然命令行可以直接调用ffmpeg,但Qt程序运行时读取的PATH环境变量并不包含FFmpeg的安装路径。解决方法是直接在代码中指定完整路径:

QString specificPath = "E:/ffmpeg/bin/ffmpeg.exe";
if (QFile::exists(specificPath)) {
    ffmpegPath = specificPath;
}

坑二:录制区域背景全黑

选择录制区域时,整个屏幕背景全黑,完全看不清要选择什么区域。这显然不是想要的效果。

通过修改RegionSelector的实现,启用透明背景和半透明遮罩:

setAttribute(Qt::WA_TranslucentBackground);  // 启用透明背景
painter.fillRect(rect(), QColor(0, 0, 0, 100));  // 半透明遮罩

这样选择区域时,选中区域完全透明,其他区域半透明黑色,既清晰又美观。

坑三:录制的视频无法播放

视频文件生成了,但播放器打不开。原因是停止录制时直接终止了FFmpeg进程,没有让它优雅地完成文件写入。

解决方案:向FFmpeg发送q命令,让它自己完成收尾工作:

ffmpegProcess->write("q");  // 优雅停止
ffmpegProcess->waitForFinished(5000);

最终效果

经过几轮与AI的"对话式调试",最终实现了一个功能完整的录屏工具:

  • 自由选择录制区域
  • 可调节帧率(15/30/60 FPS)
  • 可调节画质(CRF值)
  • 支持音频录制(可选)
  • 实时显示录制时长
  • 生成标准MP4格式视频

最关键的是:完全免费,没有任何限制

一点感悟

回头看看这个过程,不禁感叹:

时代真的变了。

以前遇到这种需求,我需要:

  1. 花时间搜索各种软件
  2. 下载试用,遇到各种限制
  3. 要么付费,要么找破解版(不安全)
  4. 或者自己花几天时间研究FFmpeg参数

现在呢?打开AI,描述需求,复制代码,遇到问题继续问AI,1小时搞定。

但是,不管时代怎么变,FFmpeg这样的开源项目永远值得致敬。没有它,AI生成的代码也无法运行。我们只是站在巨人的肩膀上,让AI帮我们更好地使用这些工具。

技术栈

  • 开发框架: Qt6
  • 视频编码: FFmpeg (libx264)
  • 开发语言: C++17

写在最后

如果你的需求和我类似,需要录制视频素材,不妨试试自己动手。代码已经有了,FFmpeg是免费的,AI助手随时待命。为什么不呢?

毕竟,自己造的轮子,才最适合自己的车

代码在我的快速开源框架中:https://www.cnblogs.com/tlink/p/19582758

微信图片_20260325145052_7545_907

ps:单独录屏功能分支上线,windows版本已经打包,地址为:https://gitee.com/Tlink/machine/tree/TlinkScreenRecorder/ 发行版下载即可

ScreenShot_2026-03-27_161902_120

关注我,带你每天进步亿点点
关注我,带你每天进步亿点点