- 博客(55)
- 资源 (19)
- 问答 (1)
- 收藏
- 关注
原创 MIT XV6 - 1.6 Lab: Xv6 and Unix utilities -uptime
本文介绍了在MIT XV6操作系统实验中的最后一个选做实验——实现uptime程序。该程序通过调用uptime系统调用,以时钟滴答(ticks)为单位输出系统的运行时间。实验中,作者编写了一个简单的C程序,直接调用uptime并输出结果。文章进一步分析了sys_uptime和sys_sleep的系统调用实现,详细解释了ticks和tickslock的更新机制,以及sleep和wakeup函数的工作原理。通过这些分析,作者展示了XV6系统中进程休眠和唤醒的基本机制,以及如何通过全局变量和锁来实现这些功能。
2025-05-13 00:07:46
780
原创 MIT XV6 - 1.5 Lab: Xv6 and Unix utilities - xargs
本实验要求实现一个简化版的UNIX xargs 程序,用于在xv6操作系统中执行命令。xargs 从标准输入读取每一行,并将其作为参数附加到指定的命令中,然后执行该命令。实验的核心是通过管道和多进程机制,打破命令参数数量的限制,实现命令的组合功能。实验提示包括使用 fork 和 exec 来执行命令,逐字符读取输入直到遇到换行符,并利用 MAXARG 定义参数数组。实验还强调了文件描述符的使用,特别是标准输入、输出和错误输出的管理。通过实现 xargs,可以更好地理解UNIX工具集的组合思想,如将 find
2025-05-11 23:24:51
775
原创 MIT XV6 - 1.4 Lab: Xv6 and Unix utilities - find
本文介绍了在MIT XV6操作系统中实现一个简单的UNIX find 工具的过程。该工具用于在指定目录及其子目录中查找特定文件名的文件。文章提供了详细的代码实现,核心功能包括递归遍历目录、过滤当前目录(.)和上级目录(..)、以及比较文件名。代码使用了深度优先搜索(DFS)算法来遍历目录树,并通过系统调用如open、read、stat等来操作文件和目录。文章还强调了如何使用strcmp进行字符串比较,以及如何通过Makefile将程序添加到XV6的用户程序中。最终的实现能够正确输出匹配文件的完整路径。
2025-05-10 19:26:20
1152
原创 Flutter PIP 插件 ---- 为iOS 重构PipController, Demo界面,更好的体验
本文介绍了Flutter PIP插件的优化过程,主要解决了还原动画体验不佳的问题。作者通过不再获取PipViewController,改为查找PipWindow,并在pictureInPictureControllerDidStartPictureInPicture通知中将自渲染View添加到rootView中,从而避免了层级问题。此外,作者还优化了自渲染UIView的处理方式,不再每次从PipWindow移除,而是在PipWindow显示时立即渲染内容,提升了用户体验。遗留问题包括应用内还原动画的拉伸效果
2025-05-10 15:37:59
1039
2
原创 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?
编译后的user/_sleep到底是什么? 它又做了什么?
2025-05-01 23:54:09
832
原创 Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自动进入PIP Mode
PIP功能从Android 8 引入,但是autoEnter功能从Android 12才开始支持,那么不支持的版本呢就需要通过监听主动调用才能进入PIP Mode,在之前的版本中因为没有转发,导致我们只能在dart中通过flutter的事件,在应用进入后台是主动调用的方式进入PIP Mode,但实际测下来,似乎无法区分通知栏下滑的通知,这导致即使应用在前台,当用户下滑通知栏的时候依然会自动进入PIP Mode。
2025-05-01 21:39:42
1700
原创 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎样练成的?
探究sleep是如何编译出来的
2025-04-29 23:42:51
603
原创 DIFY 浅尝 - DIFY + Ollama 添加模型
你应该可以看到部署好的Open WebUI,并假设有下载好你感兴趣的模型。应该可以打开 Dify,设置用户登录后应该可以看到以下界面。其他的字段都按照官方文档指引先填写了,这里遇到了两个问题。,里面有介绍接入各种模型供应商的方法。找到Ollama,点击设置。
2025-04-26 18:34:48
362
原创 Flutter PIP 插件 ---- iOS Video Call 自定义PIP WINDOW渲染内容
画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能,包括自定义内容渲染和控制系统控件的显示。// 添加自定义视图// 设置约束]];// 移除自定义视图。
2025-04-16 17:53:56
1316
2
原创 TRAA (2)MCP Server 支持 Claude Desktop等工具中指定窗口截图
TRAA MCP Server 是一个基于 Model Context Protocol (MCP) 的屏幕捕获服务器。它提供了系统屏幕和窗口的枚举功能,以及截图捕获功能。通过 MCP 协议,服务器可以与客户端进行通信,支持标准输入输出(stdio)和服务器发送事件(SSE)两种传输方式。源码地址traa-mcpTRAA MCP Server 提供了一个强大而灵活的屏幕捕获解决方案。它的模块化设计、完善的错误处理和丰富的功能使其成为各种屏幕捕获需求的理想选择。
2025-03-29 02:21:41
217
原创 TRAA (1) 封装PYTHON库,为MCP做准备
TRAA Python 绑定库提供了一个简单而强大的接口,用于实现跨平台的屏幕捕获功能。通过合理使用其提供的 API,可以轻松实现各种屏幕录制和截图功能。如果在使用过程中遇到问题,欢迎在项目的 GitHub 仓库提出 issue。
2025-03-20 21:49:52
863
原创 Flutter PIP 插件 ---- iOS Video Call
画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能。iOS 的 PiP 功能实现主要依赖于 AVKit 框架,通过合理配置及其相关组件,可以为用户提供流畅的画中画体验。在实现过程中需要注意版本兼容性、状态管理和资源释放等问题。
2025-02-12 22:30:02
728
原创 Webrtc (1) - Windows 编译
最近项目上遇到webrtc wgc 的几个test case无法通过,与webrtc人员沟通后决定要自行修复一下(因为他们不想管…)
2025-01-21 14:02:43
997
原创 FFMPEG录屏(23)--- 不得不记录一下 cursor + claude-3.5 + flutter + opentraa 生成的屏幕共享Demo工程,实在是没谁了!
这是耗时2小时,flutter刚学了几天的新手基于cursor生成的界面,实在是太DIAO了,到最后我甚至都没看几眼他生成的代码是什么,只是根据他的结果不停的追问,抛出了异常,甚至bug,我都是是描述一下让cursor修复。两个小时做了我可能要1天才能完成的工作,而且如果我一次性将需求描述清楚,也就是有一个比较好的提示词,应该速度会更快。,如果要跑起来看效果需要把submodule拉下来,暂时只支持macOS,目前还没有完善相关的ci/cd,慢慢来吧。
2024-11-29 00:46:49
494
原创 FFMPEG录屏(22)--- Linux 下基于X11枚举所有显示屏,并获取大小和截图等信息
通过上述步骤,我们可以在 Linux X11 窗口系统下枚举系统中的显示屏,并获取显示屏的 ID、坐标和截图等信息。这些功能可以用于开发桌面管理工具、屏幕录制软件等应用。希望这篇博客对你有所帮助!
2024-11-11 13:23:51
750
原创 Harmony OS 如何实现 C++ NATIVE YUV420(其他数据格式如BGRA等)自渲染
在本文中,我们将介绍如何在HarmonyOS下自渲染视频数据。我们将实现包括创建本地窗口、设置缓冲区选项、请求缓冲区、处理视频帧数据以及刷新缓冲区等步骤。
2024-11-06 20:34:00
924
原创 FFMPEG录屏(21)--- Linux 下基于X11枚举所有可见窗口,并获取标题、图标、缩略图、进程路径等信息
在 get_window_icon函数中,对于不同架构的不同实现是为了适应32位和64位架构下数据存储和处理方式的不同。在32位架构下,可以直接复制整个内存块,而在64位架构下,需要逐个元素处理,以确保数据的正确性。
2024-11-03 16:57:06
998
原创 FFMPEG录屏(20)--- 枚举macOS下的窗口和屏幕列表,并获取名称缩略图等信息
通过上述步骤,我们可以在 macOS 下获取当前系统中可屏幕共享的窗口和屏幕信息,包括窗口和屏幕的 ID、标题、坐标、进程图标和缩略图等信息。希望这篇文章对您有所帮助。traa。
2024-10-24 00:01:48
837
原创 FFMPEG录屏(19)--- 枚举Windows下的屏幕列表,并获取名称、缩略图
在Windows系统中,枚举显示器列表并获取它们的名称和缩略图是一个常见的需求。本文将详细介绍如何实现这一功能,涉及到的主要技术包括Windows API和C++编程。
2024-10-19 22:42:42
581
原创 FFMPEG录屏(18)--- 枚举Windows下的窗口列表并获取进程图标、标题、缩略图等
我们需要一些辅助函数来获取窗口属性、窗口文本、进程路径等。我们需要一个回调函数来处理每个被枚举到的窗口。if (!if (!!if (!!} else {!if (!通过上述步骤,我们可以在Windows系统中获取可进行屏幕共享捕获的窗口列表,并获取它们的图标和缩略图。这一过程涉及到Windows API的使用、窗口属性的获取、图标和缩略图的处理等多个方面。
2024-10-18 21:28:24
704
原创 SPDLOG适配鸿蒙Next,添加控制台sink
最近工作需要,原有的 native 模块需要编译支持 OHOS(BTW, OHOS 真的很容易拼错)。因此,我为 OHOS 增加了一个 console 的 sink,与 Android 基本一致。废话不多说,直接上代码吧。直接复制即可,里面的 level 转换和 output 接口改一下就能完美运行。当然,其中的 domain 和失败返回重试还有待商榷。!defined2。
2024-10-16 14:01:38
494
原创 FFMPEG录屏(17)--- 使用 DwmRegisterThumbnail 捕获指定窗口图像数据
通过 [] API,我们可以高效地捕获指定窗口的图像数据。本文介绍了如何检查 DWM 支持、注册缩略图、更新缩略图属性以及捕获窗口图像数据的完整过程。希望这篇文章对您有所帮助。
2024-10-16 13:56:29
1091
原创 记录一次运行时重定向Windows系统API的操作
众所周知Windows API GetWindowText/GetWindowTextLength有点坑,可能会耗时久以及造成当前进程卡死。最近调查客户卡死问题,唯一可疑的线程就在调用GetWindowText,于是决定先重定向这个系统API到自己实现的不卡顿的版本。思路是在客户用的自己DLL被加载时,直接修改进程的内存中的代码即可~不再赘述,上代码。验证下来果然不卡了,而且调试发现这个线程就是客户flutter application的ui线程,使用了win32这个flutter的库。
2024-09-05 14:44:24
382
1
原创 FFMPEG录屏(16)--- MAG(Magnification)捕获桌面,屏蔽指定窗口
我又不得不吐槽一下了,微软你做新API的时候,有考虑过开发人员的感受吗,不修BUG就不修呗,整个DXGI WGC,性能是有了,功能啥也不管,但凡你每一套API都兼顾基本要求,谁还研究各种老技术。
2023-05-17 01:01:40
1615
9
原创 FFMPEG录屏(15)---- WGC 捕获桌面(三) WGC(Windows Graphics Capture)采集
前两篇已经通过官网Demo对WGC采集方式进行了验证和扩展,现在开始正片~FFMPEG录屏(13)---- WGC 捕获桌面(一) 改造官网DemoFFMPEG录屏(14)---- WGC 捕获桌面(二) Copy数据到CPUNew Ways to do Screen CaptureWindows.UI.Composition-Win32-SamplesWebRtc WGC综上想要基于最新的捕获技术WindowsGraphicsCapture进行图像捕获有以下限制目前大多数项目和很多成熟项目中一般C+
2023-05-13 22:56:32
5353
6
原创 FFMPEG录屏(12)---- DXGI 捕获桌面
最近增加了对Duplication API捕获桌面的支持,记录一下过程和其中遇到的问题。参考资料Desktop Duplication ApiAccquireNextFrameDXGI_OUTDUPL_POINTER_SHAPE_TYPE官方Demo吐槽DX这套接口是真的烦,真的烦,为了获取到duplication接口,你得初始化一堆东西啊啊啊啊啊啊啊!初始化的你眼花缭乱啊啊啊啊啊啊啊啊!准备工作避免系统中没有d3d依赖,所有d3d接口通过动态加载方式引入程序。准备一个简单的函数用来加载动
2020-06-02 12:27:11
8882
65
原创 React 白板组件分享 FabricJs
fabric-whiteboard基于NodeJs、React开发的白板组件,通过这次也学习了如何新建、开发、测试、发布单独的React组件。半吊子前端,不喜勿喷嘿嘿。还有一些功能和优化要做,持续更新中ScreenShotsFeaturesFreely drag the palette.Arrow,Square,Ellipse,Line,DotLine,Select,Erase...
2020-04-09 17:26:42
1858
原创 FFMPEG录屏(10)---- 基于Electron的UI工程
EasyRecorder EasyRecorder is a cross-platform screen recorder which is written by node-js and depended on screen-recorder.GitHub:EasyRecorderScreenShotsFeaturesDifferent ways to record...
2020-03-05 10:18:50
2605
2
原创 FFMPEG录屏(9)---- AAC、H264合成MP4
在进行合成MP4之前请仔细阅读FFMpeg官方例子中的muxing.c文件,该文件通过生成测试数据合成MP4文件。并阅读如下文章对FFMpeg的时间基、时间戳,以及音视频同步原理进行理解。<Compute PTS and DTS correctly to sync audio and video ffmpeg C++><ffmpeg 2.3版本, 关于ffplay音视频同步...
2020-01-06 20:00:52
2663
4
EasyRecorder Setup 0.18.1.exe
2020-06-02
FFMPEG录屏软件1.0
2019-11-08
InstallWizard
2013-10-09
WIN32七巧板,实现目标图形判断
2012-05-05
对于fgets和fgetws的疑问?
2014-08-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人