当前位置: 首页 > news >正文

逆向苹果私有框架!他把第三方视频逼成了macOS原生壁纸

分享一个可以在最新的 macOS 系统上面直接去使用第三方的视频作为壁纸的一个项目。它的名字叫做Phosphene这个项目因为使用了一些逆向工程的方法直接去调用了苹果的私有框架所以它实现了和系统深度的集成以及非常好的性能。这个项目在技术上面和系统集成上面有很多特别有意思的点。Phosphene是第一个成功逆向工程苹果私有框架 WallpaperExtensionKit 并利用该框架实现自定义视频壁纸的项目。它的做法是在运行时动态加载这个私有框架通过 Swift 的 Mirror 机制解析系统的 XPC 类型直接接入了 macOS 原生的壁纸渲染管道。它完全抛弃了传统的窗口覆盖或者注入方式带来的好处是视频壁纸可以真正成为系统壁纸生态的一份子。它会在系统设置的壁纸里面直接出现跟苹果官方的 Aerial 壁纸在一起。进程跑在系统的 WallpaperAgent 里面就算主应用退了壁纸也依然会在。它对锁屏、空闲、睡眠这些状态的处理跟系统的壁纸完全一致。支持每个显示器不同的壁纸以及虚拟空间所有的这些配置都是由系统来自动持久化的非常原生。Phosphene设计了一套非常完整的自适应播放策略。有一个叫做 PlaybackPolicy 的东西会综合机器的热状态、电池的电量、电源的类型、是不是在游戏模式、现在的显示模式动态调整播放等级。播放等级分为 full、reduced、minimal、paused 四个等级。它有遮挡检测当所有的显示器都被窗口完全盖住的时候会自动暂停渲染直到桌面重新露出来才会继续。它还会根据当前的策略自动切换不同的分辨率和帧率的视频。通过时间戳的偏移和双 AVAssetReader 的预加载实现无间隙循环保证视频循环完全没有卡顿、没有闪烁。Phosphene在实现过程中遇到了多个棘手的技术难题。它要在远程的 CAContext 里面去驱动 AVPlayerLayer这是苹果不允许的Phosphene 直接用了AVSampleBufferDisplayLayer自己去管理整个解码的流程绕过了苹果的限制。系统快照的问题是在锁屏的时候会编码失败导致看到的是一个灰色的屏幕它用了一个运行时的method swizzle替换了编码逻辑。XPC 类型因为是私有没有头文件它用了Mirror 反射动态读取字段不用头文件就可以跟系统进行通信。它的锁屏动画用了三次曲线的缓入缓出体验跟系统自带的 Aerial 完全一样。传统的macOS视频壁纸应用一般有两种实现方式。一种是创建一个全屏的窗口把这个窗口放到桌面图标的下面去播放视频另一种是把视频拆成一帧一帧的 PNG 图片利用壁纸管理器非常快速的切换来模拟视频。Phosphene完全不一样它直接走的硬件加速解码CPU 和 GPU 的占用会非常的低。它不会去修改任何系统文件也不会注入到其他进程稳定性会高很多支持锁屏壁纸、多显示器、虚拟空间所有的这些系统级的功能。它的整个生命周期都是交给系统去管理的不会存在内存泄漏或者进程残留的问题。Phosphene项目的出现在技术上面和生态上面带来了比较深远的影响。它最大的意义就是证明了通过逆向工程私有框架完全可以写出一个跟官方几乎没有差别的系统级的扩展给 macOS 的定制化开发打开了一扇全新的门。它很严格的保证了系统的稳定性同时又可以去调用一些官方没有开放的功能。它里面用到的自适应播放、无间隙循环这些东西对于其他做视频渲染的开发者来讲也是非常有参考价值的。另外它也有可能会间接的推动苹果去开放正式的视频壁纸 API或者苹果可能会因此加强对私有框架的保护。这个项目的局限性以及未来可能会遇到一些兼容性的挑战。它的限制还是比较明显的只能在 macOS 26 也就是 Tahoe 及以上的版本运行。它是基于 SwiftUI 和 glassEffect 这个 API 来做的不支持老的系统所以还在用老版本的 macOS 或者还在用 Intel Mac 的用户没有办法用。更大的一个风险就是因为它是直接调的苹果的私有框架苹果只要在任何一个大版本的系统更新里面动了这些接口它很有可能就会一下子完全不能用了未来的兼容性是完全掌握在苹果手里的。https://github.com/kageroumado/phosphene
http://www.zskr.cn/news/1342557.html

相关文章:

  • 郯城本地苗木供应商评测:山东,临沂,江苏,乌桕苗木、巨紫荆苗木、日本红枫苗木、朴树苗木、榉树苗木、樱花苗木、欧洲枫香苗木选择指南 - 优质品牌商家
  • 2026年四川颗粒板厂家评测:靠谱供应商核心维度解析 - 优质品牌商家
  • 学生用户画像-考勤主题标签构建
  • C++强制类型转换的四种方式
  • 重磅!AI 大神 Karpathy 加盟 + 算力工具链垄断,Anthropic 凭啥围剿 OpenAI?
  • 变压器设计-基于AP法
  • 论文开讲,开会内容
  • CAN模型:让GAN具备审美判断与风格突破能力
  • 智慧铁路之钢轨缺陷识别 自动化轨道检测系统开发 铁路养护车辆计算机视觉功能实现 轨道交通腐蚀识别 钢轨磨损识别10340期
  • 台湾话TTS自然度卡在3.2/5?用MOS-LQO双维度测评法定位8类发音失真源(附自动化诊断脚本)
  • 【助睿实验指导】助睿ETL-订单利润分流数据加工
  • 神经网络工程化:从信号处理视角解剖CNN/RNN/Transformer设计逻辑
  • 玻璃材质提示词失效率高达67%?2024最新Glass Prompt Framework v3.0(含Cinema4D材质参数→MJ语义映射表)
  • ARMv8通用定时器架构与CNTHP_CTL_EL2寄存器详解
  • AI算力增长的绿色悖论:硬件生产与模型训练的环境成本分析
  • RL-ARM TCPnet内存管理ERR_MEM_FREE错误分析与解决方案
  • 2026免费一键去图片水印的app推荐|6款工具实测对比排行榜
  • 免费图片去水印工具怎么选?2026在线网站/手机软件/小程序去水印推荐
  • 量子计算中的导数估计:从PSR到aGPSR的演进
  • 从能算到秒杀:完全平方数与最少数量的数学真相
  • Scikit-Learn特征选择三大范式实战:过滤/包裹/嵌入法落地要点
  • 工业级时间序列预测:从股票预测到电力、交通、设备、零售四大落地场景
  • 论文查重与 AI 痕迹双焦虑?okbiye 降重 + 降 AIGC 功能,一键解决毕业季两大难题
  • 短波通讯:魔术6米波
  • 24 鸿蒙LiteOS GPIO中断实战:从原理到上升沿/下降沿详解
  • Mythos能力解析:大模型可验证推理与Gated Release机制
  • AI代理运行时基础设施:告别上下文溢出与不可靠执行
  • AI模型能力受限发布机制解析:Gated Release原理与实践
  • 警惕AI领域未经证实的技术传闻与虚构命名
  • 2026云南空压机服务商排行:四川,成都,昆明,四川离心空压机/四川英格索兰空压机/成都冷干机/成都寿力空压机/选择指南 - 优质品牌商家